С# (произносится как "see sharp") - это высокоуровневый, статически типизированный, объектно-ориентированный язык программирования, разработанный Microsoft. Код С# обычно ориентирован на семейство инструментов Microsoft.NET и среды выполнения, включая.NET Framework и.NET Core. Используйте этот тег для вопросов о коде, написанном на официальной спецификации С# или С#. В большинстве вопросов также нужен тег для целевой платформы.NET, такой как [.net] (для.NET Framework), [.net-core] или [.net-standard].

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

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

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

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

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

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

В С# 7.1 введен общий шаблон Matching, выведенные имена элементов кортежа, выражения по умолчанию, асинхронные main, и некоторые другие.

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

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

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

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


Привет, мир Пример:

using System;

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

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

using System;

namespace HelloWorldUsingClasses
{
    class ExampleClass
    {
        string exampleString = "Hello World!";
        public ExampleClass()
        {
            Console.WriteLine(exampleString);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            ExampleClass objHelloWorld = new ExampleClass();
        }
    }
}

Ресурсы


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


Ресурсы


книги


Учебники


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

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


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


С# Online IDE


С# автономная IDE

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