Описание тега 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 |
+---------+--------------------------------+------------------------+----------------+----------------------------------+---------------------------------+
Новые особенности
Версии 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
буквальные выражения, async main и некоторые другие.
Представлен C# 7.2private protected
, не завершающие именованные аргументы, цифровой разделитель после базового спецификатора, условное выражение ref, ссылочная семантика для типов значений и многое другое.
В C# 7.3 представлены функции, которые позволяют безопасному коду быть таким же производительным, как и небезопасный код, новые параметры компилятора, использованиеout
объявления переменных в инициализаторах полей, свойств и конструкторов, поддержка ==
а также !=
о типах кортежей и многом другом.
В C# 8.0 введены ссылочные типы, допускающие значение NULL, которые генерируют предупреждения компилятора о возможном разыменовании значений NULL, если в коде явно не указано, что переменная может бытьnull
(например, string? foo
- переменная, которая может иметь значение NULL), асинхронные потоки, которые расширяют возможности, в частности, IoT и интеграцию с облаком, а также методы интерфейса по умолчанию для предотвращения нарушения изменений интерфейсов, а также некоторые другие улучшения.
Компиляция обычно выполняется на промежуточном языке Microsoft (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
- Как отправить электронную почту в ASP.NET C#
- Каковы правильные номера версий для C#?
- В чем разница между String и String в C#?
- Почему
Random
каждый раз дает одни и те же результаты? - Захваченные переменные в циклах
- В C# возможно ли приведение
List<Child>
кList<Parent>
? - Передает ли C# объекты по ссылке?
- Почему компилятор жалуется на мое условное выражение (
a == b ? x : y
)? - Почему я получаю
NullReferenceException
? (Ссылка на объект не установлена на экземпляр объекта) - Что такое исключение "индекс вне допустимого диапазона" и как его исправить?
- Что нового в C# 4.0?
- Что нового в.NET Framework?
- Что нового в C#?
- Новые возможности C# 6
- Новые возможности C# 7
- Новые возможности C# 8
- Скрытые возможности C#?
Ресурсы
- История C#
- Спецификация языка C# 5.0
- Проект спецификации языка C# 6.0
- Статья в Википедии
- Проекты.NET на GitHub
- Старый блог Эрика Липперта || Новый блог Эрика Липперта
- Блог Джона Скита
- Серия игр Джеймса Майкла Хейра "Маленькие чудеса и маленькие ловушки" на C#/.NET
- Руководство по программированию
- Начало работы с Visual C#
- Основы C#: разработка для начинающих
- Visual C# .NET для начинающих
- https://csharp.2000things.com/
- Dot Net Perls
Книги
- CLR через C#
- В двух словах о C# 7.0: исчерпывающий справочник
- C# в деталях
- Head First C#
- Язык программирования C# ( 3-е издание, 4-е издание)
- Рекомендации по проектированию каркаса
- Essential C# ( 6.0 (5-е издание), 7.0 (6-е издание))
- Visual C# Как программировать
- Visual C# .NET, шаг за шагом
- C# 5.0 на свободе
- Pro C# 7.0: с.NET и.NET Core
- Изучение C#3.0
- Начиная с Visual C# (4-е издание)
- Программирование на C# 5.0 - создание приложений для Windows 8, Интернета и настольных ПК для.NET 4.5 Framework
- C# 4.0 Полный справочник
- [Основы шаблонов проектирования C#] 44
- C# 6.0 и.NET 4.6 Framework
- C# 7 и.NET Core
- Эффективный C# (охватывает C# 6.0), 50 конкретных способов улучшить свой C# ( 3-е издание)
- Краткое руководство по синтаксису C# 7: карманное руководство по языку, API и библиотеке ( 2-е издание)
Учебники
- MSDN
- Виртуальная академия Microsoft
- docs.microsoft.com
- microsoft.com/dotnet
- Канал 9: C#
- Pluralsight C# путь
Будущее языка C#
Делитесь и предлагайте новые функции здесь.
Демонстрационные проекты
C# Интернет IDE
C# Offline IDE