Этот набор предназначен для изучения ключевых моментов языка C# и объектно ориентированного программирования
Send to app
Mark as learnt
Язык программирования C#
C#
Объектно-ориентированный язык программирования. Разработан в 1998-2001 гг. компании Microsoft
CIL (Common Intermediate Language)
«Высокоуровневый ассемблер» виртуальной машины .NET. Промежуточный язык, разработанный фирмой «Microsoft» для платформы .NET Framework.
.NET Framework
Программная платформа, выпущенная компанией Microsoft в 2002 году. Основой платформы является общеязыковая среда исполнения Common Language Runtime (CLR), которая подходит для разных языков программирования.
CLR (Common Language Runtime)
Общеязыковая исполняющая среда для байт-кода CIL (MSIL), в который компилируются программы, написанные на .NET-совместимых языках программирования (C#, Managed C++, Visual Basic .NET, F# и прочие). CLR является одним из основных компонентов пакета Microsoft .NET Framework.
Байт-код
Стандартное промежуточное представление, в которое может быть переведена компьютерная программа автоматическими средствами. По сравнению с исходным кодом, удобным для создания и чтения человеком, байт-код — это компактное представление программы, уже прошедшей синтаксический и семантический анализ.
Язык программирования
Формальный язык, предназначенный для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, определяющих внешний вид программы и действия, которые выполнит исполнитель (обычно — ЭВМ) под её управлением.
Компьютерная программа
Комбинация компьютерных инструкций и данных, позволяющая аппаратному обеспечению вычислительной системы выполнять вычисления или функции управления
Маши́нный код
Система команд (набор кодов операций) конкретной вычислительной машины, которая интерпретируется непосредственно процессором или микропрограммами этой вычислительной машины.
Ча́рлз Бэ́ббидж
(1791-1871) — английский математик, изобретатель. Сконструировал и построил (1820-22) машину для табулирования. С 1822 года работал над постройкой разностной машины. В 1833 году разработал проект универсальной цифровой вычислительной машины — прообраза современной ЭВМ.
А́лан Мэ́тисон Тью́ринг
(1912-1954) — английский математик, логик, криптограф, оказавший существенное влияние на развитие информатики. Предложенная им в 1936 году абстрактная вычислительная «Машина Тьюринга», которую можно считать моделью компьютера общего назначения, позволила формализовать понятие алгоритма и до сих пор используется во множестве теоретических и практических исследований.
Рекурсия
Важный метод программирования, позволяющий функции вызывать саму себя.
JIT-компиляция (англ. Just-in-time compilation, компиляция «на лету»), динамическая компиляция (англ. dynamic translation)
Технология увеличения производительности программных систем, использующих байт-код, путём компиляции байт-кода в машинный код или в другой формат непосредственно во время работы программы. Таким образом достигается высокая скорость выполнения по сравнению с интерпретируемым байт-кодом (сравнимая с компилируемыми языками) за счёт увеличения потребления памяти (для хранения результатов компиляции) и затрат времени на компиляцию. JIT базируется на двух более ранних идеях, касающихся среды исполнения: компиляции байт-кода и динамической компиляции.
abstract
Модификатор, указывает, что изменяемый элемент имеет отсутствующую или неполную реализацию. Этот модификатор можно использовать с классами, методами, свойствами, индексаторами и событиями. Этот модификатор в определении класса позволяет указать, что класс может быть только базовым классом для других классов. Члены, помеченные как абстрактные или включенные в абстрактный класс, должны быть реализованы классами, производными от абстрактного класса.
break
Этот оператор завершает выполнение ближайшего оператора внешнего цикла или switch, в котором он находится. Управление передается оператору, который расположен после завершенного оператора.
char
Это ключевое слово char используется для объявления экземпляра структуры System.Char, используемой .NET Framework для представления символа Юникода. Значение этого объекта представляет собой 16-разрядное числовое (порядковое) значение.
continue
Оператор, передает управление следующей итерации вложенного оператора while, do, for или foreach, в котором она встречается.
do
Оператор, выполняет оператор или блок операторов, пока определенное выражение не примет значение false. Тело цикла должно быть заключено в фигурные скобки {}, если оно не состоит из одного оператора. В этом случае фигурные скобки необязательны.
event
Ключевое слово, используется для объявления события в классе Publisher.
try-finally
С помощью блока finally можно выполнить очистку всех ресурсов, выделенных в блоке try, и запускать код даже при возникновении исключения в блоке try. Как правило, операторы блока finally выполняются, когда элемент управления покидает оператор try. Передача управления может возникать в результате нормального выполнения, выполнения операторов break, continue, goto или return или распространения исключения из оператора try.
foreach, in
Оператор, повторяет группу встроенных операторов для каждого элемента в массиве или коллекции объектов, которые реализуют интерфейс IEnumerable или IEnumerable. Этот оператор используется для итерации по коллекции для получения необходимых сведений, однако его нельзя использовать для добавления или удаления элементов из исходной коллекции во избежание непредвиденных побочных эффектов. Если требуется добавить или удалить элементы из исходной коллекции, используйте цикл for.
internal
Ключевое слово, является модификатором доступа для типов и членов типов. Внутренние типы или члены доступны только внутри файлов в той же сборке.
namespace
Ключевое слово, используется для объявления области действия, которая содержит набор связанных объектов. Пространство имен можно использовать для организации элементов кода и для создания глобально уникальных типов.
operator
Ключевое слово, используется для перегрузки встроенного оператора или выполнения пользовательского преобразования в объявлении класса или структуры.
params
С помощью ключевого слова params можно указать параметр метода, принимающий переменное число аргументов. Можно отправить список аргументов типа, указанного в объявлении параметра, с разделителями-запятыми, или массив аргументов указанного типа. Можно также не отправлять аргументы. Если аргументы не отправляются, длина списка params равна нулю. В объявлении метода после ключевого слова params дополнительные параметры не допускаются, и в объявлении метода допускается только одно ключевое слово params.
readonly
Ключевое слово, модификатор, который можно использовать для полей. Если объявление поля содержит этот модификатор, присвоение значений таким полям может происходить только как часть объявления или в конструкторе в том же классе.
sealed
При применении к классу этот модификатор, запрещает другим классам наследовать от этого класса. Этот модификатор можно использовать для метода или свойства, которое переопределяет виртуальный метод или свойство в базовом классе. Это позволяет классам наследовать от вашего класса, запрещая им при этом переопределять определенные виртуальные методы или свойства.
static
Модификатор, используется для объявления статического члена, принадлежащего собственно типу, а не конкретному объекту. Этот модификатор можно использовать с классами, полями, методами, свойствами, операторами, событиями и конструкторами, но нельзя — с индексаторами, методами завершения или типами, отличными от классов.
this
Ключевое слово, ссылается на текущий экземпляр класса, а также используется в качестве модификатора первого параметра метода расширении.
typeof
Позволяет получить объект System.Type для типа. Выражение typeof принимает следующую форму: System.Type type = typeof(int);
unsafe
Ключевое слово, обозначает небезопасный контекст, необходимый для выполнения любых операций с применением указателей.
virtual
Ключевое слово, используется для изменения объявлений методов, свойств, индексаторов и событий и разрешения их переопределения в производном классе.
as
Оператор, можно использовать для выполнения определенных типов преобразований между совместимыми ссылочными типами или типами, допускающими значение NULL.
byte
Ключевое слово, обозначает целочисленный тип данных, в котором хранятся значения от 0 до 255 (8-разрядное целое число без знака)
checked
Ключевое слово, используется для явного включения проверки переполнения при выполнении арифметических операций и преобразований с данными целого типа.
decimal
Ключевое слово, обозначает 128-разрядный тип данных. По сравнению с другими типами данных с плавающей запятой, диапазон значений этого типа меньше, а точность выше, благодаря чему этот тип подходит для финансовых расчетов. Приблизительный диапазон значений от -7,9 x 10^28 до 7,9 x 10^28 / от 10^0 до 10^28. Точность: 28–29 значащих цифр. Если требуется, чтобы числовой действительный литерал рассматривался как этот тип, следует использовать суффикс m или M, например: 300.5m
double
Ключевое слово, обозначает простой тип, используемый для хранения 64-разрядных значений с плавающей запятой. Точный и приблизительный диапазон значений типа: от ±5,0e−324 до ±1,7e308. Точность: 15–16 знаков. По умолчанию фактический числовой литерал в правой части оператора назначения обрабатывается как этот тип. Если необходимо, чтобы целое число обрабатывалось как данный тип, следует использовать суффикс d или D, например: 35D
explicit
Ключевое слово, объявляет оператор преобразования определяемого пользователем типа, который должен быть вызван с помощью приведения.
fixed
Оператор, не позволяет сборщику мусора переносить перемещаемую переменную. Допускается только в небезопасном контексте. Его также можно использовать для создания буферов фиксированного размера. Этот оператор задает указатель на управляемую переменную и "закрепляет" эту переменную во время выполнения оператора. Без него указатели на перемещаемые управляемые переменные были бы мало полезны, так как при сборке мусора переменные переносились бы непредсказуемым образом. Компилятор C# позволяет присвоить указатель только управляемой переменной в этом операторе.
goto
Оператор, передает управление программой непосредственно оператору с меткой. Часто используется для передачи управления определенной метке смены регистра или метке по умолчанию в операторе switch. Этот оператор также удобно использовать для выхода из глубоко вложенных циклов.
in (универсальный модификатор)
Для параметров универсального типа это ключевое слово указывает, что параметр типа является контравариантным. Данное ключевое слово может применяться в универсальных интерфейсах и делегатах.
is
Проверяет совместимость объекта с заданным типом или (начиная с C# 7) проверяет выражение на соответствие шаблону.
new
В C# это ключевое слово можно использовать в качестве оператора, модификатора или ограничения. Как оператор: Применяется для создания объектов и вызова конструкторов. Как модификатор: Используется, чтобы скрыть наследуемый член от члена базового класса. Как ограничение: Применяется для ограничения типов, которые могут использоваться в качестве аргументов для параметра типа в универсальном объявлении.
out
Контекстно-зависимое ключевое слово, можно использовать в двух контекстах: 1) В качестве модификатора параметра, который позволяет передавать аргумент в метод по ссылке, а не по значению. 2) В объявлениях параметров универсального типа для интерфейсов и делегатов, что указывает, что параметр типа является ковариантным.
private
Ключевое слово, является модификатором доступа к члену. Закрытый доступ является уровнем доступа с минимальными правами. Доступ к закрытым членам можно получить только внутри тела класса или структуры, в которой они объявлены.
ref
Ключевое слово, указывает на значение, переданное по ссылке. Оно используется в трех разных контекстах: 1) В сигнатуре и вызове метода для передачи аргумента в метод по ссылке. 2) В сигнатуре метода для возврата значения вызывающему объекту по ссылке. 3) В теле элемента для указания на то, что возвращаемые ссылочные значения хранятся локально в виде ссылки, которая может быть изменена вызывающим объектом.
short
Ключевое слово short обозначает целочисленный тип данных, в котором хранятся значения. Диапазон: от -32 768 до 32 767. Размер: 16-разрядное целое число со знаком. Переменную этого типа можно объявить и инициализировать, назначив ей десятичный, шестнадцатеричный или (начиная с C# 7) двоичный литерал.
Литерал (англ. literal )
Запись в исходном коде компьютерной программы, представляющая собой фиксированное значение. Литералами также называют представление значения некоторого типа данных.
string
Этот тип представляет последовательность, состоящую из нуля или более символов в кодировке Юникод. Это псевдоним для String в .NET Framework. Несмотря на то, что этот тип представляет собой ссылочный тип, операторы равенства (== и!=) по определению сравнивают не ссылки, а значения объектов данного типа. Это делает проверку равенства строк более интуитивно понятной.
throw
Сообщает о возникновении исключения во время выполнения программы. Синтаксис выглядит следующим образом: throw [e], где e — это экземпляр класса, производного от Exception.
uint
Ключевое слово uint обозначает целочисленный тип данных, в котором хранятся значения. Диапазон: от 0 до 4 294 967 295. Размер: 32-разрядное целое число без знака.
ushort
Ключевое слово, обозначает целочисленный тип данных, в котором хранятся значения. Диапазон: От 0 до 65535. Размер: 16-разрядное целое число без знака.
void
При использовании в качестве типа возвращаемого значения для метода это ключевое слово указывает, что метод не возвращает значение. Данное ключевое слово не допускается в списке параметров метода.
base
Ключевое слово, используется для доступа к членам базового из производного класса в следующих случаях: 1) Вызов метода базового класса, который был переопределен другим методом. 2) Определение конструктора базового класса, который должен вызываться при создании экземпляров производного класса. Доступ к базовому классу разрешен только в конструкторе, методе экземпляра или методе доступа к свойству экземпляра. Использование этого ключевого слова в статическом методе является недопустимым. Доступ осуществляется к базовому классу, заданному в объявлении класса. Например, если указать class ClassB : ClassA, члены ClassA будут доступны из ClassB независимо от базового класса ClassA.
switch
Оператор выбора, который выбирает для выполнения один раздел switch из списка кандидатов, сравнивая их с выражением соответствия.
class
Классы объявляются с помощью ключевого слова class, как показано в следующем примере: class TestClass { }
default
Ключевое слово default можно использовать в операторе switch или в выражении значения по умолчанию: 1) Оператор switch: задает метку по умолчанию. 2) Выражения значения по умолчанию: создает значение типа по умолчанию. Для ссылочных типов это будет значение NULL, для типов значений — ноль, а для структур — 0 бит.
if-else
Оператор if определяет, какой оператор будет выполняться при выполнения условия, заданного выражением Boolean .
extern
Модификатор, используется для объявления метода с внешней реализацией. При применении служб взаимодействия для вызова неуправляемого кода этот модификатор обычно используется с атрибутом DllImport. В этом случае также необходимо объявить метод как static.
float
Ключевое слово, обозначает простой тип, в котором хранятся 32-разрядные значения с плавающей запятой. Приблизительный диапазон значений: от -3.4 × 10^38 до +3.4 × 10^38. Точность: 7 знака. По умолчанию фактический числовой литерал в правой части оператора назначения обрабатывается как double. Таким образом, для инициализации переменной с плавающей запятой следует использовать суффикс f или F, например: 3.5F
int
Обозначает целочисленный тип данных, в котором хранятся значения. Диапазон: от -2147483648 до 2147483647. Размер: 32-разрядное целое число со знаком
lock
При помощи этого ключевого слова блок выражений можно пометить как важный фрагмент. Получив блокировку взаимного исключения для указанного объекта, выражения выполняются, а затем снимается блокировка.
null
Ключевое слово null является литералом, представляющим пустую ссылку, которая не ссылается на объект. null является значением по умолчанию для переменных ссылочного типа. Обычные типы значений не могут принимать значение NULL. Однако в C# 2.0 представлены типы значений, допускающие значение NULL.
out (универсальный модификатор)
Для параметров универсального типа, это ключевое слово указывает, что параметр типа является ковариантным. Данное ключевое слово может применяться в универсальных интерфейсах и делегатах.
protected
Ключевое слово, является модификатором доступа к члену. Доступ к защищенному элементу может быть получен из соответствующего класса, а также экземплярами производных классов.
return
Оператор, завершает выполнение метода, в котором он присутствует, и возвращает управление вызывавшему методу. Он также возвращает необязательное значение. Если метод имеет тип void, этот оператор можно опустить. Если данный оператор находится внутри блока try, блок finally, если он существует, будет выполняться до возврата управления вызывающему методу.
sizeof
Позволяет получить размер в байтах для неуправляемого типа. К неуправляемым типам относятся встроенные типы, перечисленные в представленной ниже таблице, а также следующие типы: 1) типы перечисления; 2) типы указателей; 3) определяемые пользователем структуры, не содержащие полей или свойств, принадлежащих ссылочным типам. Извлечение размера переменной типа int: int intSize = sizeof(int);
struct
Тип, который представляет собой тип значения, который обычно используется для инкапсуляции небольших групп связанных переменных, например координат прямоугольника или характеристик элемента в инвентаризации.
Оператор true
Возвращает логическое значение true, чтобы указать, что операнд имеет значение true, и возвращает значение false в противном случае.
ulong
Ключевое слово, обозначает целочисленный тип данных, в котором хранятся значения. Диапазон: от 0 до 18 446 744 073 709 551 615. Размер: 64-разрядное целое число без знака. Переменную, можно объявить и инициализировать, назначив ей десятичный, шестнадцатеричный или (начиная с C# 7) двоичный литерал.
using
Ключевое слово using имеет два основных применения: 1) В качестве директивы, если используется при создании псевдонима для пространства имен или при импорте типов, определенных в других пространствах имен. 2) В качестве оператора, если определяет область, по завершении которой объект удаляется.
volatile
Ключевое слово, означает, что поле может изменить несколько потоков, выполняемых одновременно. Поля, объявленные этим ключевым словом, не участвуют в оптимизации компилятора, предполагающей доступ для одного потока. Это гарантирует, что в любой момент времени в поле будет содержаться актуальное значение.
bool
Ключевое слово, является псевдонимом для Boolean. Оно используется для объявления переменных для хранения логических значений, true и false.
try-catch
Оператор try-catch состоит из блока try, за которым следует одно или несколько предложений catch, задающих обработчики для различных исключений.
const
Для объявления константного поля или константной локальной используется это ключевое слово. Константные поля и локальные не являются переменными и не могут быть изменены. Константы могут быть числами, логическими значениями, строками или нулевыми ссылками.
delegate
Объявление типа делегата аналогично сигнатуре метода. Оно имеет возвращаемое значение и любое число параметров любого типа: public delegate void TestDelegate(string message); public delegate int TestDelegate(MyType m, long num);
enum
Ключевое слово, используется для объявления перечисления — отдельного типа, который состоит из набора именованных констант, называемого списком перечислителей. Это ключевое слово используется для объявления перечисления — отдельного типа, который состоит из набора именованных констант, называемого списком перечислителей.
Оператор false
Возвращает логическое значение true, чтобы указать, что операнд является false, и возвращает значение false в противном случае.
for
Используя цикл for, можно раз за разом выполнять оператор или блок операторов, пока определенное выражение не примет значение false. Этот тип цикла удобен для перебора массивов и для других сфер применения, в которых заранее известно количество итераций цикла.
implicit
Ключевое слово, служит для объявления неявного оператора преобразования пользовательского типа. Этот оператор обеспечивает неявное преобразование между пользовательским типом и другим типом, если при преобразовании исключается утрата данных.
interface
Интерфейс содержит только сигнатуры методов, свойств, событий или индексаторов. Класс или структура, реализующие интерфейс, должны реализовать члены интерфейса, заданные в определении интерфейса. В следующем примере класс ImplementationClass должен реализовать метод с именем SampleMethod, не имеющий параметров и возвращающий значение void.
long
Обозначает целочисленный тип данных, в котором хранятся значения. Диапазон: От -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807. Размер: 64-разрядное целое число со знаком. Переменную long можно объявить и инициализировать, назначив ей десятичный, шестнадцатеричный или (начиная с C# 7) двоичный литерал.
object
Тип object — это псевдоним для Object в .NET Framework. В унифицированной системе типов C# все типы, стандартные и определяемые пользователем, ссылочные типы и типы значений напрямую или косвенно наследуются из Object. Переменным типа object можно назначать значения любого типа. Если переменная типа значения преобразуется в объект, она считается упакованной. Если переменная типа значения преобразуется в тип значения, она считается распакованной.
override
Модификатор, требуется для расширения или изменения абстрактной или виртуальной реализации унаследованного метода, свойства, индексатора или события.
public
Ключевое слово, является модификатором доступа для типов и членов типов. Общий доступ является уровнем доступа с максимальными правами.
sbyte
Обозначает целочисленный тип данных, в котором хранятся значения. Диапазон: От -128 до 127. Размер: 8-разрядное целое число со знаком. Переменную sbyte можно объявить и инициализировать, назначив ей десятичный, шестнадцатеричный или (начиная с C# 7) двоичный литерал.
stackalloc
Ключевое слово, используется в контексте небезопасного кода для выделения блока памяти стеку.
unchecked
Ключевое слово, позволяет предотвратить проверку переполнения при выполнении арифметических операций и преобразований с данными целого типа. В непроверенном контексте перегрузка не помечается, если результат выражения выходит за допустимые пределы значений конечного типа.
Директива using static
Директива using static обозначает тип, доступ к статическим членам которого можно получить, не указывая имя типа. Он имеет следующий синтаксис: using static , здесь полное имя типа — это имя типа, на статические члены которого можно ссылаться, не указывая имя типа. Если полное имя (полное имя пространства имен вместе с именем типа) не указано, C# создает ошибку компилятора CS0246: "Тип или пространство имен '' не найдены".
while
Оператор while выполняет оператор или блок операторов, пока определенное выражение не примет значение false.
add
Контекстное ключевое слово add определяет метод доступа настраиваемого события, который вызывается, когда клиентский код подписывается на событие. Если указан настраиваемый метод доступа add, также необходимо указать метод доступа remove.
async
Модификатор async позволяет указать, что метод, лямбда-выражение или анонимный метод является асинхронным. Если этот модификатор используется в методе или выражении, они называются асинхронными методами. Ниже приводится пример асинхронного метода с именем ExampleMethodAsync: public async Task ExampleMethodAsync() { }
dynamic
Тип dynamic включает операции, в которых он применяется для обхода проверки типов во время компиляции. Такие операции разрешаются во время выполнения. Тип dynamic упрощает доступ к API COM, таким как API автоматизации Office, а также к динамическим API, таким как библиотеки IronPython, и к HTML-модели DOM.
global
Контекстное слово global, указанное перед оператором ::, ссылается на глобальное пространство имен, которое используется по умолчанию в любых программах на языке C# и в других случаях не именуется отдельно.
Предложение join
Предложение join удобно для связывания элементов из разных исходных последовательностей, не имеющих прямых связей в объектной модели. Единственное требование заключается в том, что у элементов в каждом источнике должно быть общим некоторое значение, которое может быть проверено на равенство. Например, у дистрибьютора может быть список поставщиков определенного продукта и список покупателей. Предложение join может использоваться, например, для создания списка поставщиков и покупателей этого продукта, которые находятся в одном заданном регионе.
Предложение orderby
В выражении запроса предложение orderby задает сортировку возвращаемой последовательности или вложенной последовательности (группы) в порядке возрастания или убывания. Для выполнения одной или нескольких операций последующей сортировки можно указать несколько ключей. Сортировка выполняется с помощью функции сравнения по умолчанию для соответствующего типа элемента. По умолчанию используется порядок сортировки по возрастанию. Также можно указать настраиваемую функцию сравнения. Тем не менее сделать это можно только с использованием синтаксиса на основе метода.
remove
Контекстное ключевое слово remove определяет метод доступа настраиваемого события, который вызывается, когда клиентский код отменяет подписку на событие. Если указан настраиваемый метод доступа remove, также необходимо указать метод доступа add.
value
Контекстное ключевое слово value используется в методе доступа set в обычных объявлениях свойств. Оно аналогично входному параметру метода. Ключевое слово value ссылается на значение, которое клиентский код пытается присвоить свойству. В приведенном ниже примере класс MyDerivedClass имеет свойство с именем Name, в котором используется параметр value для присвоения новой строки резервному полю name. С точки зрения клиентского кода эта операция выглядит как простое присвоение.
where (ограничение универсального типа)
В определении универсального типа предложение where позволяет задать ограничения для типов, которые можно использовать как аргументы для параметра типа, определенных в универсальном объявлении. Например, можно объявить универсальный класс MyGenericClass так, чтобы параметр типа T реализовывал интерфейс IComparable: public class MyGenericClass where T:IComparable { }
Псевдоним extern
Иногда может потребоваться сослаться на две версии сборок, которые имеют одинаковые полные имена типов. Например, если необходимо использовать две или более версии сборки в одном приложении. Используя внешний псевдоним сборки, пространства имен для каждой сборки можно перенести внутрь пространств имен корневого уровня с именованием по псевдониму, что позволяет использовать их в одном файле.
await
Оператор await применяется к задаче в асинхронном методе для вставки точки приостановки выполнения метода до завершения выполнения ожидаемой задачи. Задача представляет выполняющуюся работу. Оператор await можно использовать только в асинхронном методе, измененном с использованием ключевого слова async. Такой метод, определенный с помощью модификатора async и обычно содержащий одно или несколько выражений await, называется асинхронным методом.
Предложение from
Выражение запроса должно начинаться с предложения from. Кроме того, выражение запроса может содержать вложенные запросы, которые также начинаются с предложения from. Предложение from определяет следующее: 1) Источник данных, в отношении которого будет выполнен запрос или вложенный запрос. 2) Локальная переменная диапазона, которая представляет каждый элемент в последовательности источника.
Предложение group
Предложение group возвращает последовательность объектов IGrouping, содержащих нуль или более элементов, соответствующих значению ключа группы. Например, можно сгруппировать последовательность строк в соответствии с первой буквой в каждой строке. В этом случае первая буква является ключом и имеет тип char. Она хранится в свойстве Key каждого объекта IGrouping. Тип ключа определяется компилятором.
Предложение let
В выражении запроса иногда требуется сохранить результат вложенного выражения, который будет использоваться в последующих предложениях. Это можно сделать с помощью ключевого слова let, которое создает новую переменную диапазона и инициализирует ее, используя результат предоставленного выражения. После инициализации с использованием этого значения такую переменную диапазона нельзя использовать для хранения других значений. Тем не менее если переменная диапазона хранит запрашиваемый тип, к ней можно выполнять запросы.
partial (тип)
Определения разделяемых типов позволяют разделять определения классов, структур и интерфейсов на несколько файлов.
Предложение "select"
В выражении запроса предложение select задает тип значений, которые будут получены при выполнении запроса. Получаемый результат зависит от вычисления всех предыдущих предложений и любых выражений в самом предложении select. Выражение запроса должно оканчиваться предложением select или group.
var
Начиная с Visual C# 3.0, переменные, объявленные в области действия метода, получают неявный "тип" var. Неявно типизированные локальные переменные является строго типизированными, как если бы вы объявили тип самостоятельно, однако его определяет компилятор. Следующие два объявления i функционально эквивалентны: var i = 10; // implicitly typed int i = 10; //explicitly typed
Предложение where
Предложение where используется в выражении запроса для того, чтобы указать, какие элементы из источника данных будут возвращаться в выражении запроса. Оно применяет логическое условие (предикат) к каждому исходному элементу (на который ссылается переменная диапазона) и возвращает те из них, для которых указанное условие имеет значение true. Одно выражение запроса может содержать сразу несколько предложений where, а одно предложение — несколько частей выражения предиката.
ascending
Контекстное ключевое слово ascending используется в предложении orderby в выражении запроса, задавая порядок сортировки от наименьшего значения к наибольшему. Поскольку порядок сортировки ascending используется по умолчанию, отдельно задавать его не нужно.
descending
Контекстное ключевое слово descending используется в предложении orderby в выражении запроса, задавая порядок сортировки от наибольшего значения к наименьшему.
get
Ключевое слово get определяет метод доступа в свойстве или индексаторе, который возвращает значение свойства или элемент индексатора.
into
Контекстное слово into можно использовать для создания временного идентификатора для сохранения результатов предложений group, join или select в новый идентификатор. Этот идентификатор может сам по себе стать источником дополнительных команд запроса. При использовании в предложениях group или select применение нового идентификатора может называться продолжением.
nameof
Используется для получения простого (неполного) строкового имени переменной, типа или члена.
partial (метод)
Сигнатура разделяемого метода определяется в одной части разделяемого типа, а его реализация — в другой части этого типа. С помощью разделяемых методов разработчики классов могут при необходимости реализовывать ловушки методов, которые схожи с обработчиками событий. Если реализация не предоставлена, компилятор удаляет сигнатуру во время компиляции.
set
Ключевое слово set определяет метод доступа в свойстве или индексаторе, который присваивает значение свойству элемента индексатора.
when
Для того чтобы указать условие фильтра в двух контекстах, можно использовать контекстно-зависимое ключевое слово when.
yield
Использование в операторе ключевого слова yield означает, что метод, оператор или метод доступа get, в котором присутствует это ключевое слово, является итератором. Использование yield для определения итератора исключает необходимость применения явного дополнительного класса (в котором содержится состояние перечисления; в качестве примера см. IEnumerator) при реализации шаблонов IEnumerable и IEnumerator для пользовательского типа коллекции.
Индексаторы
Индексаторы позволяют индексировать экземпляры класса или структуры точно так же, как и массивы. Индексированное значение можно задавать или получать без явного указания типа или экземпляра элемента. Индексаторы действуют как свойства, за исключением того, что их акцессоры принимают параметры.
События
События позволяют классу или объекту уведомлять другие классы или объекты о возникновении каких-либо ситуаций. Класс, отправляющий (или порождающий) событие, называется издателем , а классы, принимающие (или обрабатывающие) событие, называются подписчиками.
Свойства
Свойство — это член, предоставляющий гибкий механизм для чтения, записи или вычисления значения частного поля. Свойства можно использовать, как если бы они были членами общих данных, но фактически они представляют собой специальные методы, называемые методами доступа. Это позволяет легко получать доступ к данным и помогает повысить безопасность и гибкость методов.
Методы
Метод — это блок кода, содержащий ряд инструкций. Программа инициирует выполнение инструкций, вызывая метод и указывая все аргументы, необходимые для этого метода. В C# все инструкции выполняются в контексте метода. Метод Main является точкой входа для каждого приложения C#, и он вызывается общеязыковой средой выполнения (CLR) при запуске программы.