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

Версии

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

Версии 1.0/1.2 и 2.0 C# были отправлены и утверждены какECMA(Веб-версия) и стандарты ISO/IEC. Последняя версия ECMAсоответствуетспецификации Microsoft C# 5.0. Языковые спецификации также доступны в Microsoft для C#3.0и C#5.0, а также C#6.0проект.

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

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

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

C# 9.0 представил множество новых концепций и функций, таких как записи a>,Инициализировать только установщики,< a href="https://learn.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 (встроенные устройства), он доступен для широкого спектра платформ.

В C# 10 появились объявления пространств имен в файловой области, глобальные директивы using, неявные использования, структуры записей, а также некоторые другие улучшения.

В C# 11 появились необработанные строковые литералы, обязательные элементы, универсальные атрибуты, шаблоны списков, локальные типы файлов, универсальная математическая поддержка и ещё.


Пример 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();
        }
    }
}

Пример Hello World начиная с .NET 6:

// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");

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


FAQs


Примечания к выпуску


Ресурсы


Книги


Учебники


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

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


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


C # Online IDE


C # Offline IDE

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