C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.

c#- это мультипарадигмальный, управляемый, объектно-ориентированный язык программирования, созданный Microsoft совместно с .NET. C # может использоваться с любой реализацией .NET, такой как .NET Core, .NET Framework, Mono и Xamarin.

Версии

+---------+---------------------------------------------------------+----------------+----------------------------------+---------------------------------+
| Version |                  Language specification                 |      Date      |           .NET Version           |          Visual Studio          |
|         +---------------+----------------+------------------------+                |                                  |                                 |
|         |      Ecma     |     ISO/IEC    |        Microsoft       |                |                                  |                                 |
+---------+---------------+----------------+------------------------+----------------+----------------------------------+---------------------------------+
| C# 1.0  | December 2002 | April 2003     | January 2002           | January 2002   | .NET Framework 1.0               | Visual Studio .NET 2002         |
+---------+               |                +------------------------+----------------+----------------------------------+---------------------------------+
| C# 1.1  |               |                | October 2003           | April 2003     | .NET Framework 1.1               | Visual Studio .NET 2003         |
| C# 1.2  |               |                |                        |                |                                  |                                 |
+---------+---------------+----------------+------------------------+----------------+----------------------------------+---------------------------------+
| C# 2.0  | June 2006     | September 2006 | September 2005         |                | .NET Framework 2.0               | Visual Studio .NET 2005         |
|         |               |                |                        |                | .NET Framework 3.0               | Visual Studio .NET 2008         |
+---------+---------------+----------------+------------------------+----------------+----------------------------------+---------------------------------+
| C# 3.0  |                -               | August 2007            |                | .NET Framework 2.0 (Except LINQ) | Visual Studio 2008              |
|         |                                |                        | November 2007  | .NET Framework 3.0 (Expect LINQ) |                                 |
|         |                                |                        |                | .NET Framework 3.5               |                                 |
+---------+                                +------------------------+----------------+----------------------------------+---------------------------------+
| C# 4.0  |                                | April 2010             | April 2010     | .NET Framework 4                 | Visual Studio 2010              |
+---------+---------------+----------------+------------------------+----------------+----------------------------------+---------------------------------+
| C# 5.0  | December 2017 | December 2018  | June 2013              | August 2012    | .NET Framework 4.5               | Visual Studio 2012              |
|         |               |                |                        |                |                                  | Visual Studio 2013              |
+---------+---------------+----------------+------------------------+----------------+----------------------------------+---------------------------------+
|         |                -               | Draft                  |                | .NET Framework 4.6               | Visual Studio 2015              |
| C# 6.0  |                                |                        | July 2015      | .NET Core 1.0                    |                                 |
|         |                                |                        |                | .NET Core 1.1                    |                                 |
+---------+                                +------------------------+----------------+----------------------------------+---------------------------------+
| C# 7.0  |                                | Specification proposal | March 2017     | .NET Framework 4.7               | Visual Studio 2017 version 15.0 |
+---------+                                +------------------------+----------------+----------------------------------+---------------------------------+
| C# 7.1  |                                | Specification proposal | August 2017    | .NET Core 2.0                    | Visual Studio 2017 version 15.3 |
+---------+                                +------------------------+----------------+----------------------------------+---------------------------------+
| C# 7.2  |                                | Specification proposal | November 2017  |                 -                | Visual Studio 2017 version 15.5 |
+---------+                                +------------------------+----------------+----------------------------------+---------------------------------+
|         |                                | Specification proposal |                | .NET Core 2.1                    | Visual Studio 2017 version 15.7 |
| C# 7.3  |                                |                        | May 2018       | .NET Core 2.2                    |                                 |
|         |                                |                        |                | .NET Framework 4.8               |                                 |
+---------+                                +------------------------+----------------+----------------------------------+---------------------------------+
| C# 8    |                                | Specification proposal | September 2019 | .NET Core 3.0                    | Visual Studio 2019 version 16.3 |
+---------+--------------------------------+------------------------+----------------+----------------------------------+---------------------------------+
| C# 9.0  |                                | Specification proposal | September 2020 | .NET 5.0                         | Visual Studio 2019 version 16.8 |
+---------+--------------------------------+------------------------+----------------+----------------------------------+---------------------------------+

Новые возможности

Версии 1.0 / 1.2 и 2.0 C # были представлены и утверждены как ECMA(веб-версия ) и стандарты ИСО / МЭК. Последняя версия ECMA соответствуетспецификации Microsoft C # 5.0. Спецификации языка также доступны от Microsoft для C # 3.0и C # 5.0, а также C # 6,0проект .

Система типов языка изначально была статической, допускались только явные объявления переменных. Введение в var(C # 3.0) и enjveXX}}}(C # 4.0) позволил ему использовать определение типа для неявной типизации переменных и использовать системы динамического типа соответственно. Делегаты, особенно с поддержкой лексического замыкания для анонимных методов (C # 2.0) и лямбда-выражений (C # 3.0), позволяют использовать язык для функционального программирования.

В C # 5.0 представлены asyncи enjveXX}}ключевые слова, чтобы упростить использование асинхронных вызовов функций.

В C # 6.0 введена нулевая операция распространения?., исключение фильтры, интерполяция строки множество других функций, которые помогают писать простой код.

C # 7.0 представил несколько аргументов out, сопоставление с образцом, кортежи для возвращаемого значения, is - выражения и switch операторы с образцами, деконструкцию, локальные функции и многое другое.

В C # 7.1 введено общее сопоставление с образцом, выведенные имена элементов кортежа, default буквенные выражения, асинхронное main и некоторые другие.

В C # 7.2 введены private protected, непоследовательные именованные аргументы, цифровой разделитель после базового спецификатора, условное выражение ref, ссылочная семантика для типов значений и некоторые другие.

В C # 7.3 введены функции, которые позволяют безопасному коду быть таким же производительным, как небезопасный код, новые опции компилятора, использование out объявлений переменных в полях, инициализаторы свойств и конструкторов, поддержка == и != на типы кортежей и некоторые другие.

В C # 8.0 введены обнуляемые ссылочные типы, которые генерируют предупреждения компилятора о возможной разыменовании нулей, если только код явно не выражает, что переменная может быть null(например, string? foo - переменная, которая может быть нулевой), асинхронными потоками, которые обеспечивают-особенно-IoT, и облачными интеграциями и методы интерфейса по умолчанию, предотвращающие внесение изменений в интерфейсы, а также некоторые другие улучшения.

В C # 9.0 появилось множество новых концепций и функций, таких как Записи a>, Только инициализирующие сеттеры, < a href = "https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-9#top-level-statements"> операторы верхнего уровня, Улучшения сопоставления шаблонови многое другое.

Компиляция обычно выполняется на языке Microsoft Intermediate Language (MSIL), который затем JIT-компилируется в собственный код (и кэшируется) во время выполнения в Common Language Runtime (CLR). Однако такие параметры, как NGen(для .NET Framework) и AOT (для Mono) означает, что код C # может быть непосредственно скомпилирован в собственное изображение. Кроме того, некоторые фреймворки (например, .NET Micro Framework) выступают в качестве интерпретаторов CIL без JIT.

Обобщения в C # предоставляются частично во время выполнения, в отличие от шаблонов C ++ (шаблоны разрешаются во время компиляции) или обобщений Java (которые используют стирание типов).

Благодаря сочетанию .NET Coreдля Windows, macOS и Linux, .NET Frameworkдля Windows (для настольных ПК / серверов / мобильных устройств), Mono для приложений Xamarin на Android, Mac, iOS, tvOS и watchOS, Silverlight / Moonlight (браузер / для мобильных устройств), Compact Framework (для мобильных устройств) ) и Micro Framework (встроенные устройства), он доступен для широкого спектра платформ.


Пример Hello World:

using System;

class Hello
{
    static void Main()
    {
        Console.WriteLine("Hello, World!");
    }
}

Пример Hello World с использованием классов:

using System;

namespace HelloWorldUsingClasses
{
   class Greeting
   {
       public static void SayHello()
       {
           Console.WriteLine("Hello World!");
       }
   }

   class Program
   {
       static void Main(string[] args)
       {
           Greeting.SayHello();
       }
   }
}

Ресурсы переполнения стека


FAQs


Ресурсы


Книги


Учебники


Будущее языка C #

Внесите свой вклад и предложите новые функции здесь.


Демо-проекты


C # Online IDE


C # Offline IDE

Связанные теги