Справочник по c#

Содержание раздела

Ключевые слова в C#
Ссылки на сведения о ключевых словах и синтаксисе языка C#.

Операторы в C#
Ссылки на сведения об операторах и синтаксисе языка C#.

Специальные символы в C#
Предоставляет ссылки на сведения о специальных контекстные символов в C# и их использовании.

Директивы препроцессора C#
Ссылки на сведения о командах компилятора для внедрения в исходном коде C#.

Параметры компилятора C#
Сведения о параметрах компилятора и их использовании.

Ошибки компилятора C#
Фрагменты кода, демонстрирующие причины и способы исправления ошибок и предупреждений компилятора C#.

Спецификация языка C#
Спецификация языка C# версии 6.0 Это черновой вариант для языка C# версии 6.0. Этот документ будет пересмотрен в рамках работы с комитетом по стандартам C# ECMA. Версия 5.0 была выпущена в декабре 2017 г. как стандартный 5-й выпуск ECMA-334.

Возможности, которые были реализованы в языке C# версий более поздних чем 6.0, представлены в предложениях по спецификации языка. В этих документах описываются изменения спецификации языка, связанные с добавлением новых функций. Это черновой вариант для формы. Эти спецификации будут улучшены и отправлены в комитет по стандартам ECMA для официального анализа и внедрения в будущую версию стандарта C#.

Предложения по спецификации C# 7.0
В версии C# 7.0 реализован ряд новых возможностей, включая сопоставления шаблонов, локальные функции, объявления выходной переменной, выражения throw, двоичные литералы и разделители между цифрами. Эта папка содержит спецификации для каждой из этих функций.

Предложения по спецификации C# 7.1
В версию C# 7.1 добавлено несколько новых возможностей. Можно написать метод , возвращающий или . Это позволяет добавлять модификатор в метод . Выражение можно использовать без типа в тех расположениях, где возможен вывод типа. Кроме того, появилось еще одно дополнительное усовершенствование: вывод имен элементов кортежа. И, наконец, сопоставление шаблонов можно использовать с универсальными шаблонами.

Предложения по спецификации C# 7.3
Версия C# 7.3 является очередным промежуточным выпуском, содержащим несколько небольших обновлений. К параметрам универсальных типов можно применять новые ограничения. Другие изменения упрощают работу с полями , включая использование выделений . Локальные переменные, объявленные с ключевым словом , можно переназначать для указания на новое хранилище. Можно применять атрибуты к автоматически реализуемым свойствам, предназначенным для созданного компилятором резервного поля. Переменные выражений можно использовать в инициализаторах. Кортежи можно проверять на равенство (или неравенство). Кроме того, были внесены некоторые улучшения в разрешение перегрузки.

Предложения по спецификации C# 8.0
Версия C# 8.0 доступна для .NET Core 3.0. В число возможностей входят использование ссылочных типов, допускающих значения NULL, рекурсивное сопоставление шаблонов, методы интерфейса по умолчанию, асинхронные потоки, диапазоны и индексы, использование шаблонов и объявлений using, назначение объединения со значением NULL и члены экземпляров с доступом только на чтение.

Предложения по спецификации C# 9.0
Версия C# 9.0 доступна для .NET 5.0. Предлагаемые функции включают записи, инструкции верхнего уровня, усовершенствованное сопоставление шаблонов, методы задания только для инициализации, выражения new с целевым типом, модульные инициализаторы, расширение методов partial, статические анонимные функции, условные выражения с целевым типом, ковариантные типы возвращаемого значения, метод расширения GetEnumerator в циклах foreach, пустые переменные в качестве параметров лямбда-выражений, атрибуты для локальных функций, целочисленные значения с системным размером, указатели на функцию, подавляемое порождение флага localsinit и аннотации для параметров неограниченного типа.

2) Измените конфигурацию платформы (x86, x64 или AnyCPU)

После успешной установки, в соответствии с используемой версией CefSharp, вам нужно будет настроить некоторые вещи, чтобы она работала:

A. CefSharp версия 51 и новее

Начиная с CefSharp 51, вы можете работать с CefSharp с помощью AnyCPU, однако он не будет работать в одиночку, поскольку вам нужно будет внести некоторые изменения в 2 конкретных файла. Сначала включите в своем проекте параметр «Предпочитать 32-битную», щелкните правой кнопкой мыши элемент «Свойства» в обозревателе решений (или на панели инструментов «Проект»> «Свойства вашего проекта») и перейдите к строить Вкладка. В общих свойствах установите флажок Prefer 32 Bit:

Затем найдите файл, его можно найти в и следующий тег в первом файла:

Ваш файл должен выглядеть так:

Наконец, измените файл, это видно в обозревателе решений вашего проекта в Visual Studio и добавьте следующие теги в тег конфигурации:

Тогда ваш конфигурационный файл будет выглядеть так:

Если вам нужна дополнительная помощь или вы не можете изменить эти файлы, взгляните на вопрос о AnyCPU в Github здесь для получения дополнительной помощи.

B. CefSharp версии 49 и старше (x86 или x64)

С CefSharp 49 или более ранними версиями вам нужно будет предоставить архитектуру вашего проекта, иначе CefSharp не будет работать. Перейдите к изменению конфигурации вашего проекта с помощью менеджера конфигурации.

Как сказал Боромир, целевой платформой вашего проекта не может быть должно быть либо или же иначе вы получите следующее предупреждение в вашей консоли, и ваше приложение не будет компилироваться.

Перейдите сначала изменить его в Configuration Manager. Щелкните правой кнопкой мыши на обозревателе решений в верхней правой части Visual Studio (прямо в решении) и выберите Менеджер конфигурации:

И выберите платформу, которая соответствует вашим требованиям в проекте:

Обратите внимание, что вам нужно создать x86 или x64, если они не существуют выделение вариант, добавив его, а затем выбрав его. После базовой конфигурации CefSharp в вашем проекте, проект будет успешно построен, так как у нас есть все необходимое для использования хрома

Теперь нам нужно просто добавить нашу форму и использовать ее с кодом

После базовой конфигурации CefSharp в вашем проекте, проект будет успешно построен, так как у нас есть все необходимое для использования хрома. Теперь нам нужно просто добавить нашу форму и использовать ее с кодом.

C# версии 2.0

Вот теперь все становится гораздо интереснее. Давайте рассмотрим некоторые основные возможности языка C# 2.0, выпущенного в 2005 году вместе с Visual Studio 2005:

  • Универсальные шаблоны
  • Анонимные методы
  • Типы значений, допускающие значение NULL
  • Итераторы
  • Ковариантность и контравариантность

Другие возможности C# 2.0 расширяли существующие возможности:

  • Отдельный доступ к методу получения и методу задания
  • Преобразования групп методов (делегаты)
  • Статические классы
  • Выведение делегата

Хотя сначала C# и был универсальным объектно-ориентированным языком, в C# версии 2.0 все кардинально изменилось

Нащупав опору под ногами, команда уделила внимание решению серьезных проблем, с которыми сталкивались разработчики. И они подошли к делу с огоньком

Благодаря универсальным шаблонам вы получаете типы и методы, которые могут работать с произвольным типом, при этом обеспечивая безопасность типа. В результате, например, наличие List<T> позволяет использовать или и совершать типобезопасные операции с этими строками или целыми числами, выполняя итерацию по ним. Использовать универсальные шаблоны удобнее, чем создавать тип , производный от , или выполнять приведение из для каждой операции.

В C# версии 2.0 появились итераторы. Если кратко, итераторы позволяют изучать все элементы в (или других перечислимых типов) с помощью цикла . Наличие итераторов в качестве первоклассного компонента в языке значительно улучшило удобочитаемость языка и способность воспринимать код.

А еще C# продолжил играть в салки с Java. Для Java уже были выпущены версии, включающие универсальные шаблоны и итераторы. Но вскоре этому было суждено измениться, так как языки продолжили развиваться независимо.

Синтаксис

Основной синтаксис языка C # аналогичен синтаксису других языков C-стиля, таких как C, C ++ и Java, в частности:

  • Точка с запятой используется для обозначения конца инструкции.
  • Фигурные скобки используются для группировки операторов. Операторы обычно группируются в методы (функции), методы в классы и классы в пространства имен .
  • Переменные назначаются с использованием знака равенства , но сравниваются с использованием двух последовательных знаков равенства .
  • Квадратные скобки используются с массивами как для их объявления, так и для получения значения по заданному индексу в одном из них.

Создание проекта

Для начала мы создадим проект приложения C#. Для этого типа проекта уже имеются все нужные файлы шаблонов, что избавляет вас от лишней работы.

  1. Откройте Visual Studio 2017.

  2. В верхней строке меню последовательно выберите Файл  > Создать  > Проект.
    (Или нажмите CTRL+SHIFT+N).

  3. В левой панели диалогового окна Новый проект разверните узел C# и выберите .NET Core. На средней панели выберите Консольное приложение (.NET Core) . Присвойте файлу имя Calculator.

Добавление рабочей нагрузки (необязательно)

Если шаблон проекта Консольное приложение (.NET Core) отсутствует, его можно получить, добавив рабочую нагрузку Кроссплатформенная разработка .NET Core. Ниже описывается порядок действий.

Вариант 1: использование диалогового окна «Новый проект»

  1. Выберите ссылку Открыть Visual Studio Installer в левой области диалогового окна Новый проект.

  2. Запускается Visual Studio Installer. Выберите рабочую нагрузку Кроссплатформенная разработка .NET Core и затем элемент Изменить.

Вариант 2: использование меню «Сервис»

  1. Закройте диалоговое окно Создать проект и в верхней строке меню выберите Сервис > Получить средства и компоненты.

  2. Запускается Visual Studio Installer. Выберите рабочую нагрузку Кроссплатформенная разработка .NET Core и затем элемент Изменить.

  1. Запустите Visual Studio.

  2. На начальном экране выберите Создать проект.

  3. В окне Создание проекта выберите C# в списке языков. Затем выберите Windows в списке платформ и Консоль в списке типов проектов.

    Применив фильтры по языку, платформе и типу проекта, выберите шаблон Консольное приложение и щелкните Далее.

    Примечание

    Если шаблон Консольное приложение отсутствует, его можно установить в окне Создание проекта. В сообщении Не нашли то, что искали? выберите ссылку Установка других средств и компонентов.

    После этого в Visual Studio Installer выберите рабочую нагрузку Кроссплатформенная разработка .NET Core.

    Затем нажмите кнопку Изменить в Visual Studio Installer. Вам может быть предложено сохранить результаты работы; в таком случае сделайте это. Выберите Продолжить, чтобы установить рабочую нагрузку. После этого вернитесь к шагу 2 в процедуре .

  4. В поле Имя проекта окна Настроить новый проект введите Calculator. Затем щелкните Далее.

  5. В окне Дополнительные сведения для целевой платформы должна быть указана версия .NET Core 3.1. Если это не так, выберите .NET Core 3.1. Затем нажмите Создать.

    Visual Studio открывает новый проект, включающий код по умолчанию «Hello World».

Примеры

Привет, мир

Ниже приводится очень простая программа на C #, версия классического примера » Hello world » с использованием функции операторов верхнего уровня, представленной в C # 9:

using System;

Console.WriteLine("Hello, world!");

Для кода, написанного как C # 8 или ниже, логика точки входа программы должна быть написана в методе Main внутри типа:

using System;

// A version of the classic "Hello World" program
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello, world!");
    }
}

Этот код отобразит этот текст в окне консоли:

Hello, world!

У каждой строки есть цель:

using System;

Вышеупомянутая строка импортирует все типы в пространстве имен. Например, класс, используемый позже в исходном коде, определяется в пространстве имен, то есть его можно использовать без предоставления полного имени типа (которое включает пространство имен).

// A version of the classic "Hello World" program

Эта строка является комментарием; он описывает и документирует код для программиста (ов).

class Program

Выше приведено определение класса для класса. Все, что следует между скобками, описывает этот класс.

{
    ...
}

Фигурные скобки обозначают границы блока кода. В этом первом случае они отмечают начало и конец занятия.

static void Main(string[] args)

Это объявляет метод члена класса, с которого программа начинает выполнение. Среда выполнения .NET вызывает метод. В отличие от Java , методу не требуется ключевое слово, которое сообщает компилятору, что метод может быть вызван из любого места любым классом. Письмо эквивалентно письму . делает метод доступным без экземпляра . Точка входа каждого консольного приложения должна быть объявлена, иначе программе потребуется экземпляр , но любому экземпляру потребуется программа. Чтобы избежать этой неразрешимой круговой зависимости , компиляторы C #, обрабатывающие консольные приложения (например, указанные выше), сообщают об ошибке, если метод отсутствует . Ключевое слово заявляет , что не имеет возвращаемого значения .

Console.WriteLine("Hello, world!");

Эта строка записывает вывод. является статическим классом в пространстве имен. Он предоставляет интерфейс для стандартных потоков ввода, вывода и ошибок для консольных приложений. Программа вызывает метод , который отображает на консоли строку с аргументом — строкой .

GUI

Пример графического интерфейса :

using System;
using System.Windows.Forms;

class Program
{
    static void Main()
    {
        MessageBox.Show("Hello, World!");
        Console.WriteLine("Is almost the same argument!");
    }
}

Этот пример аналогичен предыдущему, за исключением того, что он генерирует диалоговое окно , содержащее сообщение «Hello, World!» вместо записи в консоль.

Изображений

Еще одна полезная библиотека — это библиотека, которая используется для программного рисования изображений. Например:

using System;
using System.Drawing;

public class Example
{
    public static Image img;

    static void Main()
    {
        img = Image.FromFile("Image.png");
    }
}

Это создаст изображение, идентичное тому, что хранится в «Image.png».

3.1. Использование CEF (в качестве браузера)

Теперь, когда наше приложение поддерживает CefSharp, нам просто нужно использовать его с кодом. Импортируйте CefSharp в ваш код, используя:

Теперь добавьте следующий метод и создайте доступную переменную класса в качестве браузера (чтобы использовать ее в других методах) в своем классе:

И выполните его после функции InitializeComponent () вашего класса (которая обычно находится в конструкторе):

Не забудьте закрыть компонент cef в событие вашей формы:

Теперь ваш класс должен выглядеть так (обратите внимание, что название проекта ):

Теперь запустите свое приложение (F5) или нажмите «Пуск» на панели инструментов, и вы увидите, как Наш Кодовый Мир загружается в ваше приложение C # Winforms.

Поздравляю! Вы только что реализовали CefSharp в своем приложении в его самом простом выражении. Мы рекомендуем вам продолжать читать документацию фреймворка и посмотреть, как вы можете создавать более удивительные вещи.

Другие действия со строками

Вы уже использовали метод (Console.WriteLine) для вывода сообщений. Метод — это блок кода, который реализует какое-либо действие. Ему присваивается имя, чтобы вы могли получить к нему доступ.

Предположим, что строки содержат начальные или конечные пробелы, которые не нужно отображать. Вам нужно обрезать эти лишние пробелы.
Эту задачу выполняют метод Trim и связанные с ним методы TrimStart и TrimEnd. Они просто удаляют из строки начальные и (или) конечные пробелы. Попробуйте выполнить код ниже:

Квадратные скобки и помогают визуализировать, что делают методы , и . Квадратные скобки показывают, где начинается и заканчивается пробел.

В этом примере демонстрируются важные принципы работы со строками. Методы управления строками возвращают новые строковые объекты, а не вносят изменения в существующие. Как видите, каждый вызов любого из методов возвращает новую строку, а не изменяет исходное сообщение.

Доступны и другие методы для работы со строкой. Вы наверняка уже пользовались командами поиска и замены в текстовых редакторах. Метод Replace выполняет аналогичную задачу для строк. Он находит некоторую подстроку и заменяет ее другим текстом. Метод Replace принимает два параметра. Это строки в скобках. Первая строка — это текст для поиска. Вторая строка — это текст для замены. Попробуйте сами. Добавьте этот код: Введите его и наблюдайте подсказки, которые появятся при вводе после переменной :

Два других полезных метода преобразуют все буквы строки в прописные или строчные. Попробуйте следующий код: Введите его и наблюдайте, как IntelliSense предоставит подсказки при вводе :

Структура программы

В C# основными понятиями организационной структуры являются *программы _, пространства имен, типы, элементы и сборки. В программе объявляются типы, которые содержат члены. Эти типы можно организовать в пространства имен. Примерами типов являются классы, структуры и интерфейсы. К членам относятся поля, методы, свойства и события. При компиляции программы на C# упаковываются в сборки. Сборка — это файл, обычно с расширением или , если она реализует приложение или _*библиотеку**, соответственно.

В качестве небольшого примера рассмотрим сборку, содержащую следующий код:

Полное имя этого класса: . Этот класс содержит несколько членов: поле с именем , два метода с именами и , а также вложенный класс с именем . Класс , в свою очередь, содержит три члена: поле с именем , поле с именем и конструктор.  — это универсальный класс. Он имеет параметр одного типа , который замещается конкретным типом при использовании.

Стек — это коллекция типа FILO (прибыл первым — обслужен последним). Новые элементы добавляются в верх стека. Удаляемый элемент исключается из верхней части стека. В предыдущем примере объявляется тип , который определяет хранилище и поведение для стека. Можно объявить переменную, которая ссылается на экземпляр типа для использования этой возможности.

Сборки содержат исполняемый код в виде инструкций промежуточного языка (IL) и символьную информацию в виде метаданных. Перед выполнением JIT-компилятор среды CLR .NET преобразует код IL в сборке в код, зависящий от процессора.

Сборка полностью описывает сама себя и содержит весь код и метаданные, поэтому в C# не используются директивы и файлы заголовков. Чтобы использовать в программе C# открытые типы и члены, содержащиеся в определенной сборке, вам достаточно указать ссылку на эту сборку при компиляции программы. Например, эта программа использует класс из сборки :

Для компиляции программы вам потребуется создать ссылку на сборку, содержащую класс стека, определенный в примере выше.

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

Такие организационные блоки описываются в других статьях этого обзора.

Операторы, допускающие логическое значение NULL

Для операндов операторы и поддерживают следующую логику с тремя значениями:

  • Оператор возвращает только в том случае, если оба операнда имеют значение . Если или имеет значение , оператор возвращает (даже если другой операнд имеет значение ). В противном случае выражение будет иметь значение .

  • Оператор возвращает только в том случае, если оба операнда имеют значение . Если или имеет значение , оператор возвращает (даже если другой операнд имеет значение ). В противном случае выражение будет иметь значение .

Эта семантика описывается в следующей таблице:

x y x&y x|y
true true true true
true false false true
true null null true
false true false true
false false false false
false null false null
null true null true
null false false null
null null null null

Поведение этих операторов отличается от типичного поведения операторов, допускающих значение NULL. Как правило, оператор, который определяется для операндов типа значения, можно также использовать с соответствующими операндами типа, допускающего значение NULL. Такой оператор возвращает , если какой-либо из операндов имеет значение . При этом операторы и могут возвращать отличное от NULL значение, даже если один из операндов имеет значение . См. подробнее о поведении операторов, допускающих значение NULL, в разделе в статье Типы, допускающие значение NULL.

Вы также можете также использовать операторы и с операндами , как показано в следующем примере:

Условные логические операторы и не поддерживают операнды типа .

Реализации

Microsoft возглавляет разработку эталонных компиляторов C # с открытым исходным кодом и набора инструментов. Первый компилятор, Roslyn , компилируется в промежуточный язык (IL), а второй, RyuJIT, представляет собой JIT-компилятор (точно в срок), который является динамическим, выполняет оптимизацию на лету и компилирует IL в собственный код для внешнего интерфейса процессора. RyuJIT имеет открытый исходный код и написан на C ++. Roslyn полностью написан на управляемом коде (C #), открыт, а функциональность представлена ​​в виде API. Таким образом, это позволяет разработчикам создавать инструменты рефакторинга и диагностики. Две ветви официальной реализации: .NET Framework (с закрытым исходным кодом, только для Windows) и .NET Core (с открытым исходным кодом, кросс-платформенный); в конечном итоге они объединились в одну реализацию с открытым исходным кодом: .NET 5.0. В .NET Framework 4.6 новый JIT-компилятор заменил прежний.

Другие компиляторы C # (некоторые из которых включают реализацию библиотеки классов Common Language Infrastructure и .NET):

  • Mono , проект, спонсируемый Microsoft, предоставляет компилятор C # с открытым исходным кодом, полную реализацию интерфейса командной строки с открытым исходным кодом (включая необходимые библиотеки фреймворка, как они указаны в спецификации ECMA) и почти полную реализацию библиотек классов NET. в .NET Framework 3.5.
  • Элементы инструмента цепь из RemObjects включает RemObjects C #, который компилирует C # код для .NET в Common Intermediate Language , Java байткод , какао , Android байткод , WebAssembly и машинный код для Windows, MacOS и Linux.
  • Проект DotGNU (сейчас прекращенный) также предоставил компилятор C # с открытым исходным кодом, почти полную реализацию Common Language Infrastructure, включая необходимые библиотеки фреймворка, как они указаны в спецификации ECMA, и подмножество некоторых оставшихся проприетарных классов Microsoft .NET. библиотеки до .NET 2.0 (не задокументированные и не включенные в спецификацию ECMA, но включенные в стандартный дистрибутив Microsoft .NET Framework).

Игровой движок Unity использует C # в качестве основного языка сценариев. В игровом движке Godot реализован дополнительный модуль C # благодаря пожертвованию в размере 24 000 долларов от Microsoft.

Какова цена?

Цену своих курсов я всегда определяю, исходя из той выгоды, которую они несут. Проще всего определить ценность знаний по какой-то специальности — это посмотреть уровень зарплат по ней.

Даже начинающим C#-программистам платят весьма прилично.

А у C#-разработчиков с опытом работы зарплаты вырастают в разы:

И мне трудно сказать, кто из программистов получает хотя бы сопоставимые зарплаты. В голову приходят только Java-программисты. Зарплаты у C#-программистов очень высокие.

Исходя из этих зарплат, я мог бы смело поставить цену на курс в 100 000 рублей. И это было бы сверхвыгодно для Вас. Вложили 100 000 рублей, а уже через год Вы заработаете на полученных знаниях 600-800 тысяч рублей. А через 2-3 года зарплата будет составлять по 2.5 – 3.5 млн рублей ежегодно. Недаром говорят, что самая выгодная инвестиция – это инвестиция в свои знания.

Однако, если я поставлю цену на курс в 100 000 рублей. То, хоть она и была бы оправданной, но за такую сумму курс смогут позволить себе лишь единицы. Более того, среди моих учеников очень много людей, для которых программирование – это просто интересное и полезное хобби. И отдавать 100 000 рублей за хобби для большинства дороговато.

Роль платформы .NET

Когда говорят C#, нередко имеют в виду технологии платформы .NET (Windows Forms, WPF, ASP.NET, Xamarin). И наоборот, когда говорят .NET, нередко имеют в виду C#. Однако, хотя эти понятия связаны, отождествлять их неверно. Язык C# был создан специально для работы с фреймворком .NET, однако само понятие .NET несколько шире.

Когда-то Билл Гейтс сказал, что .NET — это лучшее, что сделала компания Microsoft. У него есть весомые основания так считать. Фреймворк .NET представляет мощную платформу для создания приложений. Вот его киллер-фичи:

  • Поддержка нескольких языков. В основе  .NET — общеязыковая среда исполнения Common Language Runtime (CLR), благодаря чему платформа поддерживает несколько языков: наряду с C# это VB.NET, C++, F#, а также различные диалекты других языков, привязанные к .NET, например, Delphi.NET. Код на любом из этих языков компилируется в сборку на общем языке CIL (Common Intermediate Language) — своего рода ассемблер платформы .NET. Поэтому можно сделать отдельные модули одного приложения на разных языках.
  • Мощная библиотека классов. .NET представляет единую для всех поддерживаемых языков библиотеку классов. Какое бы приложение мы ни собирались писать на C# — текстовый редактор, чат или сложный веб-сайт — так или иначе мы задействуем библиотеку классов .NET.
  • Разнообразие технологий. Общеязыковая среда исполнения CLR и базовая библиотека классов — это основа для целого стека технологий, которые разработчики могут задействовать при создании разных приложений. Например, для баз данных в этом стеке имеется технология ADO.NET и Entity Framework Core. Для графических приложений с насыщенным интерфейсом — технологии WPF и UWP. Для более простых графических приложений — Windows Forms. Для разработки мобильных приложений — Xamarin. Для создания веб-сайтов — ASP.NET и т.д.

C# версии 3.0

C# версии 3.0 был выпущен в конце 2007 года вместе с Visual Studio 2008, однако существенно набор возможностей языка пополнится только в .NET Framework версии 3.5. Эта версия ознаменовала кардинальное изменение развития C#. Она доказала, что C# действительно является достойным языком программирования. Давайте рассмотрим некоторые основные возможности в этой версии:

  • Автоматически реализуемые свойства
  • Анонимные типы
  • Выражения запросов
  • Лямбда-выражения
  • Деревья выражений
  • Методы расширения
  • Неявно типизированные локальные переменные
  • Разделяемые методы
  • Инициализаторы объектов и коллекций

Если оглянуться назад, становится ясно, что многие из этих возможностей не могли не появиться или появиться отдельно друг от друга. Все они образуют единый и стратегически значимый набор. Принято считать, что уникальным преимуществом C# было выражение запроса, которое также называется LINQ.

Немного углубившись, можно отметить деревья выражений, лямбда-выражения и анонимные типы как основу для создания LINQ. Однако в любом случае в C# 3.0 была представлена революционная концепция. Версия C# 3.0 начала закладывать фундамент для превращения C# в гибридный объектно-ориентированный/функциональный язык.

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

Людям потребовалось некоторое время, чтобы принять эту концепцию и начать применять ее, но это у них получилось. А теперь, спустя несколько лет, код стал гораздо более кратким, простым и функциональным.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector