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

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

Версии 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.1 введено общее сопоставление с образцом, выведенные имена элементов кортежа, default буквенные выражения, асинхронное main и некоторые другие.

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

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

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

Компиляция обычно выполняется на языке 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();
       }
   }
}

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


Вопросы и ответы


Ресурсы


Книги


Учебники


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

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


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


C # Online IDE


C # Offline IDE

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