Обучение
Схема обучения
Создание и запуск простых консольных приложений C# (начало работы с C#, часть 2) - Training
Используйте Visual Studio Code для разработки консольных приложений C#, реализующих массивы, циклы foreach и операторы if.
Этот браузер больше не поддерживается.
Выполните обновление до Microsoft Edge, чтобы воспользоваться новейшими функциями, обновлениями для системы безопасности и технической поддержкой.
В этой статье содержится описание основных выпусков языка C#. Команда разработчиков C# продолжает добавлять новые функции. Сведения о состоянии функции для отдельных языков, включая функции, которые будут добавлены в предстоящие выпуски, см. в репозитории dotnet/roslyn на сайте GitHub. Чтобы узнать, когда определенная функция была добавлена на язык, обратитесь к файлу журнала версий C# в репозитории dotnet/csharplang
на сайте GitHub.
Важно!
В некоторых возможностях используются типы и методы, которые в спецификации C# определены как стандартная библиотека. Платформа .NET предоставляет эти типы и методы в разных пакетах. например, обработка исключений. Каждая инструкция и выражение throw
проверяется, чтобы убедиться, что вызываемый объект является производным от Exception. Аналогичным образом каждая инструкция catch
проверяется, чтобы убедиться, что перехваченный тип является производным от Exception. В каждой версии могут добавляться новые требования. Чтобы использовать новейшие возможности языка в старой среде, может потребоваться установить определенные библиотеки. Эти зависимости описаны на странице для каждой конкретной версии. Дополнительные сведения о связи между языком и библиотекой, а также общие сведения о такой зависимости см. здесь.
выпущено в ноябре 2024 г.
C# 13 включает следующие новые возможности:
params
коллекции: модификатор params
не ограничивается типами массивов. Теперь можно использовать params
с любым распознаваемым типом коллекции, включая Span<T>
и типы интерфейсов.lock
: если целевой объект инструкции lock
является System.Threading.Lock, компилятор создает код для использования метода Lock.EnterScope() для ввода эксклюзивной области.
ref struct
, полученный из этого, поддерживает шаблон Dispose()
для выхода из эксклюзивной области.\e
: вы можете использовать \e
в качестве последовательности экранирования литерала символа для символа ESCAPE
, Unicode U+001B
.^
.ref
локальные и unsafe
контексты в итераторах и асинхронных методах.ref struct
типы.ref struct
в качестве аргументов для параметров типа в обобщениях.partial
типах.Контекстное ключевое слово field
для доступа к созданному компилятором резервному полю в автоматически реализованном свойстве было представлено как функция предварительного просмотра.
Выпущено в ноябре 2023 г.
В C# 12 добавлены следующие функции:
class
или struct
типе...e
), чтобы развернуть любую коллекцию.struct
.ref readonly
Параметры - ref readonly
параметров обеспечивают более четкость для API, которые могут использовать ref
параметры или in
параметры.using
псевдонима можно использовать для псевдонима любого типа, а не только именованных типов.И, перехватчики - выпущены в качестве функции предварительной версии.
В целом C# 12 предоставляет новые функции, которые упрощают написание кода C#. Синтаксис, который вы уже знали, доступен в других местах. Другой синтаксис обеспечивает согласованность связанных понятий.
Выпущено в ноябре 2022 г.
В C# 11 добавлены следующие функции:
Span<char>
шаблонов для константы string
nameof
областьref
поля и scoped ref
C# 11 содержит универсальные математические функции и несколько функций, поддерживающих эту цель. Числовые алгоритмы можно записывать один раз для всех типов чисел. Существует больше возможностей для упрощения работы с struct
типами, такими как обязательные элементы и структуры по умолчанию. Работа со строками упрощается с необработанными строковыми литералами, новой строкой в интерполяциях строк и строковых литералах UTF-8. Такие функции, как локальные типы файлов, позволяют упростить генераторы источников. Наконец, шаблоны списков добавляют дополнительную поддержку сопоставления шаблонов.
Выпущено в ноябре 2021 г.
В C# 10 добавлены следующие функции и улучшения языка C#:
global using
const
строки можно инициализировать с помощью интерполяции строк, если все заполнители являются константными строками.sealed
при переопределении ToString
в типе записи .AsyncMethodBuilder
в методах#line
pragma.Дополнительные возможности доступны в режиме предварительной версии . Чтобы использовать эти функции, необходимо задать <LangVersion>
значение Preview
в проекте:
C# 10 продолжает работу над темами удаления церемонии, разделения данных от алгоритмов и повышения производительности среды выполнения .NET.
Многие функции означают, что вы вводите меньше кода, чтобы выразить те же понятия. Структуры записей синтезируют многие из одинаковых методов, которые записывают классы . Структуры и анонимные типы поддерживаются выражениями. Глобальные директивыи объявления пространства имен в области файлов означают, что вы выражаете зависимости и организацию пространства имен более четко. Лямбда-улучшения упрощают объявление лямбда-выражений, где они используются. Новые шаблоны свойств и улучшения деконструкции создают более краткий код.
Новые интерполированные обработчики строк и AsyncMethodBuilder
поведение могут повысить производительность. Эти языковые функции были применены в среде выполнения .NET для повышения производительности в .NET 6.
C# 10 также отмечает большую часть смены ежегодной каденции для выпусков .NET. Так как не каждая функция может быть завершена в течение ежегодного периода времени, вы можете попробовать несколько функций предварительной версии в C# 10. Можно использовать как универсальные атрибуты, так и статические абстрактные члены в интерфейсах, но эти предварительные версии могут измениться до их окончательного выпуска.
Выпущено в ноябре 2020 г.
C# версии 9 был выпущен с .NET 5. Это версия языка используется по умолчанию для любой сборки, предназначенной для выпуска .NET 5. Она содержит следующие новые и улучшенные функции:
В C# 9 получили развитие три направления предыдущих выпусков: устранение формальностей, отделение данных от алгоритмов и доступность большего количества шаблонов в большем количестве мест.
Операторы верхнего уровня упрощают чтение основной программы. Сократилась потребность в формальностях: больше не нужны ни пространства имен, Program
, ни классы, ни static void Main()
.
Введение records
содержит краткий синтаксис для ссылочных типов, которые соответствуют семантике значений для равенства. Эти типы используются для определения контейнеров данных, которые обычно определяют минимальное поведение.
Методы задания только для инициализации предоставляют возможность недеструктивной мутации (with
выражений) в записях. В C# 9 также добавлены ковариантные возвращаемые типы, благодаря чему производные записи могут переопределять виртуальные методы и возвращать тип, производный от возвращаемого типа базового метода.
Возможности сопоставления шаблонов расширяются несколькими способами. Числовые типы теперь поддерживают шаблоны диапазонов. Шаблоны можно комбинировать с помощью шаблонов and
, or
и not
. Скобки можно добавить для уточнения более сложных шаблонов:
C# 9 включает новые улучшения сопоставления шаблонов.
and
требуется соответствие обоих шаблонов.or
требуется соответствие хотя бы одного из шаблонов.not
с отрицанием требуется несоответствие данного шаблона.Эти шаблоны обогащают синтаксис шаблонов. Одним из наиболее распространенных применений нового синтаксиса является проверка значения на null.
if (e is not null)
{
// ...
}
Любой из этих шаблонов можно использовать в любом контексте, где разрешены шаблоны: выражения с шаблоном is
, выражения switch
, вложенные шаблоны и шаблоны метки switch
оператора case
.
Высокопроизводительные вычисления на C# поддерживает еще один набор функций.
nint
и nuint
моделируют целочисленные типы собственного размера в целевом ЦП.localsinit
можно опустить для сохранения инструкций.Еще один набор улучшений поддерживает сценарии, в которых генераторы кода добавляют функциональные возможности.
В C# 9 добавлено множество других небольших функций, улучшающих производительность разработчиков, а также написание и чтение кода:
new
целевого типаstatic
GetEnumerator()
для циклов foreach
Выпуск C# 9 — это следующий этап развития, благодаря которому C# остается современным языком программирования общего назначения. Его возможности обеспечат дальнейшую поддержку современных рабочих нагрузок и типов приложений.
Выпущено в сентябре 2019 г.
C# 8.0 — это первый основной выпуск C#, специально предназначенный для .NET Core. Некоторые функции используют новые возможности среды CLR, другие — типы библиотек, добавленные только в .NET Core. В C# 8.0 добавлены следующие функции и улучшения языка C#:
Для членов интерфейса по умолчанию требуются улучшения среды CLR. Эти функции были добавлены в среду CLR для .NET Core 3.0. Для диапазонов и индексов, а также для асинхронных потоков требуются новые типы в библиотеках .NET Core 3.0. Ссылочные типы, допускающие значение NULL, реализованные в компиляторе, гораздо удобнее использовать, когда библиотеки снабжаются заметками для предоставления семантической информации о состоянии NULL аргументов и возвращаемых значений. Эти заметки сейчас добавляются в библиотеки .NET Core.
Выпущено в мае 2018 г.
Новые возможности в выпуске C# 7.3 можно разделить на две основные группы. Одна из них — набор функций для повышения эффективности безопасного кода до уровня небезопасного кода. Вторая — постепенные улучшения существующих функций. В этом выпуске добавлены новые параметры компилятора.
В ту группу, которая отвечает за повышение производительности безопасного кода, входят следующие новые возможности:
ref
;stackalloc
;fixed
с любым типом, который поддерживает шаблон;Для существующих функций предоставлены следующие улучшения:
==
и !=
с типами кортежа;in
аргументов.Новые параметры компилятора:
-publicsign
позволяет включить подписывание сборок как программного обеспечения с открытым кодом;-pathmap
позволяет предоставить сопоставление для исходных каталогов.Выпущено в ноябре 2017 г.
В C# 7.2 добавлено несколько небольших языковых функций:
stackalloc
;fixed
с любым типом, который поддерживает шаблон;ref
;readonly struct
, указывающее, что структура является неизменяемой и должна передаваться в методы члена как параметр in
;in
для параметров, указывающего, что аргумент передается по ссылке, но не изменяется вызываемым методом;ref readonly
для возвращаемого значения метода, указывающего, что метод возвращает значение по ссылке, но не допускает операции записи в соответствующий объект;ref struct
, указывающее, что тип структуры обращается напрямую к управляемой памяти и всегда должен обрабатываться с выделением стека;private protected
модификатор доступа: private protected
разрешает доступ для производных классов в одной сборке.ref
выражения: ?:
теперь может быть ссылкой.Выпущено за август 2017 г.
C# начали выпускать доработанные выпуски с C# 7.1. В этой версии добавлен элемент конфигурации выбора версии языка, три новых возможности языка и новое поведение компилятора.
Новые языковые функции в этом выпуске
async
Main
.
async
.default
Наконец, компилятор имеет два варианта -refout
и -refonly
создание эталонной сборки.
Выпущено за март 2017 г.
C# версии 7.0 был выпущен вместе с Visual Studio 2017. Эта версия имеет некоторые эволюционные и холодные вещи в вену C# 6.0. Ниже приведены некоторые из новых функций:
Другие возможности:
Все эти функции предлагают новые возможности для разработчиков и возможность писать более чистый код, чем когда-либо. Важным аспектом является доработка объявления переменных путем использования ключевого слова out
и поддержки нескольких возвращаемых значений благодаря кортежу. Теперь .NET Core подходит для любой операционной системы, а также уверенно движется в направлении облачных технологий и портативности. Очевидно, что разработчики активно занимаются этими новыми возможностями наравне с добавлением новых функций.
Выпущено в июле 2015 г.
Версия 6.0, выпущенная в Visual Studio 2015, выпустила множество небольших функций, что сделало программирование C# более продуктивным. Вот некоторые из них:
Другие новые возможности:
Если вы посмотрите на эти функции вместе, вы увидите интересный шаблон. В этой версии C# начал устранять шаблоны языка, чтобы сделать код более удобочитаемым и доступным для чтения. Поэтому эта версия, несомненно, привлечет сторонников простого и понятного кода.
Еще одно новшество, связанное с этой версией, не является функцией языка в обычном понимании. Состоялся выпуск компилятора Roslyn в виде службы. Теперь компилятор C# написан на C#, и вы можете использовать его при программировании.
Выпущено за август 2012 г.
Версия C# 5.0, выпущенная вместе с Visual Studio 2012, была крайне целенаправленной. Практически все нововведения в этой версии касались другой инновационной концепции: модели async
и await
для асинхронного программирования. Ниже приведен список основных функций:
Информационный атрибут вызывающего объекта позволяет легко получать сведения о контексте, в котором выполняется работа, не прибегая к массивному стандартному коду отражения. Он находит обширное применение в задачах диагностики и ведения журнала.
Однако настоящими звездами этого выпуска являются async
и await
. После появления этих функций в 2012 г. C# удалось снова взять быка за рога, первоклассным образом внедрив асинхронность в язык.
Выпущено за апрель 2010 г.
C# версии 4.0, выпущенной в Visual Studio 2010, представил некоторые интересные новые возможности:
Внедренные типы взаимодействия облегчили создание сборок COM-взаимодействия для приложения при развертывании. Универсальная ковариантность и контравариантность расширяют возможности применения универсальных шаблонов, однако эти функции несколько академичны и высоко оценены авторами, создающими платформы и библиотеки. Именованные и дополнительные параметры позволяют избавиться от многих перегрузок методов и сделать работу более удобной. Однако ни одна из этих функций не является кардинальным изменением.
Значимым событием стало появление ключевого слова dynamic
. Благодаря ключевому слову dynamic
в C# версии 4.0 появилась возможность переопределять компилятор при типизации во время компиляции. Используя это ключевое слово, вы можете создавать конструкции, характерные для языков с динамической типизацией, таких как JavaScript. Вы можете создать dynamic x = "a string"
и добавить туда шестерку, отложив решение о дальнейших действиях во времени выполнения.
Динамическое связывание подвержено ошибкам, однако открывает великолепные возможности внутри языка.
Выпущено в ноябре 2007 г.
C# версии 3.0 был выпущен в конце 2007 года вместе с Visual Studio 2008, однако существенно набор возможностей языка пополнится только в .NET Framework версии 3.5. Эта версия ознаменовала кардинальное изменение развития C#. Она доказала, что C# действительно является достойным языком программирования. Давайте рассмотрим некоторые основные возможности в этой версии:
Если оглянуться назад, становится ясно, что многие из этих возможностей не могли не появиться или появиться отдельно друг от друга. Все они образуют единый и стратегически значимый набор. Эта функция убийцы версии C# была выражением запроса, также известным как языковой интегрированный запрос (LINQ).
Немного углубившись, можно отметить деревья выражений, лямбда-выражения и анонимные типы как основу для создания LINQ. Однако в любом случае в C# 3.0 была представлена революционная концепция. C# 3.0 начал создавать основы для превращения C# в гибридный объектно-ориентированный или функциональный язык.
Среди прочего, теперь вы можете создавать декларативные запросы в стиле SQL для выполнения операций с коллекциями. Вместо создания цикла for
для вычисления среднего значения из списка целых чисел теперь вам достаточно использовать list.Average()
. Сочетание выражений запросов и методов расширения сделало список целых чисел намного умнее.
Выпущено в ноябре 2005 г.
Давайте рассмотрим некоторые основные возможности языка C# 2.0, выпущенного в 2005 году вместе с Visual Studio 2005:
Другие возможности C# 2.0 расширяли существующие возможности:
В то время как C# начался как универсальный язык объектно-ориентированного (OO), C# версии 2.0 изменился в спешке. Благодаря универсальным шаблонам вы получаете типы и методы, которые могут работать с произвольным типом, при этом обеспечивая безопасность типа. В результате, например, наличие List<T> позволяет использовать List<string>
или List<int>
и совершать типобезопасные операции с этими строками или целыми числами, выполняя итерацию по ним. Использование универсальных шаблонов лучше, чем создание типа, наследуемого ListInt
от ArrayList
Object
каждой операции или приведения от нее.
В C# версии 2.0 появились итераторы. Если кратко, итераторы позволяют изучать все элементы в List
(или других перечислимых типов) с помощью цикла foreach
. Наличие итераторов в качестве первоклассного компонента в языке значительно улучшило удобочитаемость языка и способность воспринимать код.
Выпущено за апрель 2003 г.
Версия C# 1.2 входит в состав Visual Studio .NET 2003. Она содержит ряд небольших улучшений языка. Наиболее значительным изменением является то, что начиная с этой версии код, создаваемый в цикле foreach
, вызывает Dispose в IEnumerator, если IEnumerator реализует IDisposable.
Выпущено за январь 2002 г.
Если взглянуть на C# версии 1.0, выпущенный вместе с Visual Studio .NET 2002, станет очевидно его сходство с Java. В рамках своих указанных целей проектирования для ECMA она стремилась быть "простым, современным, объектно-ориентированным языком общего назначения". В то время, похоже, Java означает, что он достиг этих ранних целей проектирования.
Однако если взглянуть на C# 1.0 сейчас, вам может стать немного не по себе. В этой версии не было встроенных асинхронных возможностей и некоторых функций для универсальных шаблонов, к которым вы уже привыкли. Фактически, в ней вообще не было универсальных шаблонов. А LINQ? Пока недоступно. Для добавления этих возможностей потребовалось несколько лет.
По современным меркам C# версии 1.0 не предоставлял практически никаких возможностей. Вам пришлось бы писать довольно подробный код. Однако надо же было с чего-то начинать. C# версии 1.0 был достойной альтернативой Java на платформе Windows.
Основные возможности C# 1.0 включали следующие компоненты:
Статьяизначально опубликована в блоге NDepend, с разрешения Эрика Дитриха (Erik Dietrich) и Патрика Смачиа (Patrick Smacchia).
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
Обучение
Схема обучения
Создание и запуск простых консольных приложений C# (начало работы с C#, часть 2) - Training
Используйте Visual Studio Code для разработки консольных приложений C#, реализующих массивы, циклы foreach и операторы if.