View on GitHub

School-IT

Учебники, статьи, ссылки, видео, упражнения и др. по С#

Главная

Ключевые слова C# 10 (шпаргалка-напоминалка)

Console.WriteLine("Привет, Мир!");
// Эта шпаргалка-напоминалка предназначена, как краткое описание ключевых слов C# 10, чтобы вспомнить их

C# 10 поддерживает платформа .NET 6.

Ключевые слова — это предварительно определенные зарезервированные идентификаторы, которые имеют специальные значения для компилятора. Их нельзя использовать как идентификаторы в программах без префикса @. Например, допустимым идентификатором является @if, но не if, поскольку if является ключевым словом.

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

Заимствовано из документации Microsoft (https://docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/keywords/) от 23.06.2022.

Список ключевых слов

a-e e-l n-s s-w
abstract event namespace static
as explicit new string
base extern null struct
bool false object switch
break finally operator this
byte fixed out throw
case float override true
catch for params try
char foreach private typeof
checked goto protected uint
class if public ulong
const implicit readonly unchecked
continue in ref unsafe
decimal int return ushort
default interface sbyte using
delegate internal sealed virtual
do is short void
double lock sizeof volatile
else long stackalloc while
enum      

Контекстные ключевые слова

a-f g-n n-s s-y
add get notnull set
and global nuint unmanaged (соглашение о вызовах указателей функций)
alias group on unmanaged (ограничение универсального типа))
ascending init or value
args into orderby var
async join partial (тип) when (условие фильтра)
await let partial (метод) where (ограничение универсального типа)
by managed (соглашение о вызовах указателей функций) record where (предложение запроса)
descending nameof remove with
dynamic nint select yield
equals not (не)    
from      

Список ключевых слов. Описание и примеры

abstract

Ключевое слово нужно для объявления абстрактного класса и его абстрактых элементов. Абстрактными элементами могут быть: методы, свойства, индексаторы и события. Нельзя создавать экземпляры абстрактного класса.

as

Оператор as нужен для преобразования ссылочных типов или типов поддерживающих null значения. Он не вызывает исключения при приведении типов. Вот его эквивалентная запись:

E as T == E is T ? (T)(E) : (T)null

base

Ключевое слово используется для доступа к членам базового класса в случаях:

bool

Ключевое слово для определения булевой переменной. Псевдоним для структуры System.Boolean.

break

byte

Ключевое слово служит для определения однобайтового беззнакового целого числа (от 0 до 255).

case

Ключевое слово для обозначения подходящего случая для оператора switch. Порядок выбора условия оператора проверяется с верху вниз.

catch

Ключевое слово предназначено для обработки исключения вызванного в блоке try. Порядок проверки множества операторов обработки исключений происходит от первого к последнему.

char

Ключевое слово используется для объявления переменной, которая хранит в себе символ UTF-16 Unicode. Псевдоним для System.Char.

checked

Оператор для проверки переполнения арифметических операций и операций преобразования.

class

Ключевое слово предназначено для объявления класса.

const

Используется для объявления константной переменной или константного поля.

continue

Ключевое слово предназначено для перехода к следующей итерации цикла (for, foreach, while или do).

decimal

Тип данных с плавающей запятой, самый большой. Занимает 16 байт.

default

Ключевое слово default можно использовать в следующих контекстах:

delegate

Объявление делегата аналогично сигнатуре метода. Он служит, как указатель на метод.

do

Оператор цикла с постусловием. Выполнятся от одного до нескольких раз. Выполняется пока условие цикла равно true.

double

Тип данных с плавающей запятой, имеет средний размер. Занимает 8 байт.

else

Ключевое слово используется в операторе if, как оператор выполняемый в случае невыполнения условия (ложности условия).

enum

Тип перечисления, определяемый набором констант целочисленного типа.

event

Объявления события, типом данных которого является определённый делегат.

explicit

Определения оператора неявного преобразования (тип данных в текущий класс).

extern

Ключевое слово используется в объявлении метода с внешней реализацией.

false

Литерал значения лжи в типе данных bool (System.Boolean).

finally

Ключевое слово используется в опреаторе try-catch-finally для завершения обработки исключения или блока try.

fixed

Ключевое слово создает блок кода с указателем на управляемую переменную и “закрепляет” эту переменную во время выполнения оператора.

float

Тип данных с плавающей запятой, имеет наименьший размер. Занимает 4 байта.

for

Объявление цикла “со счётчиком”.

foreach

Цикл для перебора элементов System.Collections.IEnumerable или System.Collections.Generic.IEnumerable<T>.

goto

Оператор перехода к метке.

if

Оператор проверки условия. Блок кода оператора выполняется, когда условие истинно (true).

implicit

Определение оператора явного преобразования (текущий класс в тип данных).

in

Ключевое слово in используется в следующих случаях:

int

Тип данных, представляющий собой 32-разрядное целое число со знаком (System.Int32).

interface

Ключевое слово для определения интерфейса. Интерфейс преставляет собой договор для классов/стуктур для соглашения об их членах.

internal

Ключевое слово используется для ограничения доступа. Оно используется в следующих уровнях доступа:

is

Оператор проверки типа. Проверяет, совместим ли результат выражения с указанным типом. Возвращает true или false.

lock

Оператор блокировки доступа к объекту. Опертор блокирует объект для других параллельных выполнений, где также используется этот оператор с таким же объектом.

long

Тип данных, представляющий собой 64-разрядное целое число со знаком (System.Int64).

namespace

Ключевое слово для объявления пространства имён.

new

null

Ссылка, которая не ссылается на объект. Может присваиваться для начальной инициализации объектам.

object

Базовый тип данных для объектов. Является псевдонимом System.Object.

operator

Ключевое слово для перегрузки операторов.

out

Ипользуется:

override

Модификатор override нужен для переопределения абстрактной или виртуальной реализации унаследанного метода, свойства, индексатора, события.

params

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

private

Ключевое слово используется в двух модификаторах доступа:

protected

Ключевое слово используется в трёх модификаторах доступа:

public

Модификатор доступа к типам и их членам с максимальным уровнем доступа, видим всему.

readonly

Ключевое слово, которое может использоваться в четырёх контекстах:

ref

Ключевое слово ref указывает на то, что значение передается по ссылке. Оно используется в четырех разных ситуациях:

return

Используется для завершения функции или возвращения ею результата.

sbyte

Ключевое слово используется для обозначения знакового однобайтового целого числа (от -128 до 127).

sealed

Модификатор класса, запрещающий наследовать этот класс.

short

Тип данных для представления 16-разрядного целого числа со знаком (от -32 768 до 32 767).

sizeof

Опратор для определения числа байт занимаемых переменной.

stackalloc

Ключевое слово stackalloc выделяет блок памяти в стеке.

static

Испольуется для:

string

Ссылояный тип данных для представления строк (последовательностей символов), является псевдонимом для System.String.

struct

Ключевое слово для создания структуры.

switch

Оператор выбора.

this

Ссылка на текущий экземпляр класса.

throw

Ключевое слово для генерации исключения.

true

Значение истины типа bool.

try

Оператор для объявления блока, в котором перехватывается исключение.

typeof

Оператор для получения System.Type для указанного типа, т.е. получение типа.

uint

Целочисленный тип данных для представлени 32-разрядного числа без знака (от 0 до 4 294 967 295).

ulong

Целочисленный тип данных для представлени 64-разрядного числа без знака (от 0 до 18 446 744 073 709 551 615).

unchecked

Данная инструкция отключает проверку переполнения при арифметических операциях и преобразованиях целочисленных чисел.

unsafe

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

ushort

Целочисленный тип данных для представлени 16-разрядного числа без знака (от 0 до 65 535).

using

Ключевое слово using используется в двух случаях:

virtual

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

void

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

volatile

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

while

Цикл с предусловием.

Контекстные ключевые слова. Описание и примеры

add

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

and

Оператор and действует с начала C# 9.0. Он создан для логического объединения шаблонов. Пример:

public static string HowOldIsMen(uint daysOld) => daysOld switch
{
	<= 10 => "Новорождённые",
	>10 and <= 365 => "Грудной ребёнок",
	> 365 and <= (365 * 3) => "Раннее детство",
	> (365 * 3) and <= (365 * 7) => "Первый период детства",
	> (365 * 7) and <= (365 * 12) => "Второй период детства",
	> (365 * 12) and <= (365 * 16) => "Подростковый возраст",
	> (365 * 16) and <= (365 * 21) => "Юношеский возраст",
	> (365 * 21) and <= (365 * 35) => "Средний возраст (первый период)",
	> (365 * 35) and <= (365 * 60) => "Средний возраст (второй период)",
	> (365 * 60) and <= (365 * 75) => "Пожилые люди",
	> (365 * 75) and <= (365 * 90) => "Старческий возраст",
	> (365 * 90) => "Долгожители",
};

alias

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

ascending

Ключевое слово ascending используется в запросах LINQ для задания порядка сортировки от наименьшего к наибольшему. Пример:

IEnumerable<string> sortedNames =
    from name in names
    orderby name ascending
    select name;

args

Операторы верхнего уровня могут ссылать на переменную args для доступа к аргументам коммандной строки.

if (args.Length > 0)
{
	foreach (var arg in args)
	{
		Console.WriteLine($"Агрумент={arg}");
	}
}
else
{
	Console.WriteLine("Без аргументов");
}

async

Модификатор async позволяет указать, что метод, лямбда-выражение или анонимный метод является асинхронным.

await

Ключевое слово await имеет несколько назначений:

by

Используется в запросах LINQ для указания способа группировки возвращаемых элементов. Пример:

var query = from emp in employees
            group emp by emp.LastName;

descending

Ключевое слово descending используется в запросах LINQ для задания порядка сортировки от наибольшего к наименьшему. Пример:

IEnumerable<string> sortedNames =
    from name in names
    orderby name descending
    select name;

dynamic

Тип dynamic - это тип данный генерируемый во время выполнения, он не проходит проверку компиляции.

equals

Контекстное ключевое слово equals используется в запросах LINQ для настройки выражения join. Пример:

var employeesAndsDepartments =
    from dep in departments
    join emp in employees on dep.Id equals emp.DepartmentId
    select new { EmployeeFullName = emp.FullName, DepartmentName = dep.Name };

from

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

get

Ключевое слово get ипользуется в поле и/или индексаторе для получения значения.

global

Псевдоним глобального пространства имён. Пример:

global::System.Console.WriteLine("Привет, Мир!");

group

Контекстное ключевое слово group нужно для группировки в запросах LINQ. Оно возвращает последовательность сгруппированных объектов IGrouping<TKey,TElement>. Пример:

var query = from emp in employees
            group emp by emp.LastName;

init

В C# 9 и более поздних версий метод доступа к свойству или индексатору init используется для назначения нового значения только при создании объекта.

into

Контекстное слово into можно применять для создания временного идентификатора для сохранения результатов предложений group, join или select в новый идентификатор.

join

Контекстное слово join нужно для создания связи между двумя коллекциями в запросах LINQ.

let

Контекстное ключевое слово let используется в запросах LINQ для создания промежуточной переменной.

managed (соглашение о вызовах указателей функций)

Указатель функции можно определить, используя ключевое слово delegate*. Их можно определять с ключевыми словами managed или unmanaged. managed используется для создания делегатов на управляемый код.

nameof

Контекстное слово nameof предназначено для получения строковой константы имени, типа или элемента переменной.

nint

Представляет собой 32- или 64-разрядное целое число со знаком, является псевдонимом для System.IntPtr.

not (не)

Оператор not действует с начала C# 9.0. Он создан участия в логических шаблонах как оператор отрицания. Пример:

if (user is not null)
{
	// ...
}

notnull

Ограничение notnull пишут, чтобы указать, что аргумент типа должен быть типом значения, не допускающим значения NULL, или ссылочным типом, не допускающим значения NULL. Пример:

class Student<T> where T: notnull
{
	// ...
}

nuint

Представляет собой 32- или 64-разрядное целое число без знака, является псевдонимом для System.UIntPtr.

on

Контекстное ключевое слово on используется в предложении соединения выражения запроса LINQ для указания условия соединения. Пример:

var employeesAndsDepartments =
    from dep in departments
    join emp in employees on dep.Id equals emp.DepartmentId
    select new { EmployeeFullName = emp.FullName, DepartmentName = dep.Name };

or

Оператор or действует с начала C# 9.0. Он создан для представления логической дизъюнкции (логического “или”).

orderby

orderby используется в запросах LINQ для задания условия сортировки. Пример:

IEnumerable<string> sortedNames =
    from name in names
    orderby name descending
    select name;

partial (тип)

Контекстное ключевое слово позволяет разделять определения классов, структур, интерфейсов или записей на несколько файлов.

partial (метод)

Контекстное ключевое слово означает, что сигнатура метода содержиться в этом файле, а его реализация в другом.

record

Контекстное ключевое слово record предназначено для определения ссылочного типа, который предоставляет встроенные возможности для инкапсуляции данных. C# 10 позволяет синтаксису record class в качестве синонима уточнить ссылочный тип и record struct определить тип значения с аналогичными функциями. Пример:

public readonly record struct Employee(int Id, int DepartmentId, string FirstName, string LastName);

remove

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

select

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

var query = from emp in employees
            select emp.LastName

set

Ключевое слово set ипользуется в поле и/или индексаторе для установки значения.

unmanaged (соглашение о вызовах указателей функций)

Указатель функции можно определить, используя ключевое слово delegate*. Их можно определять с ключевыми словами managed или unmanaged. unmanaged используется для создания делегатов на не управляемый код.

unmanaged (ограничение универсального типа)

Ограничение unmanaged пишут, чтобы указать, что аргумент типа является не управляемым типом. Пример:

unsafe public static byte[] GetData<T>(this T argument) where T : unmanaged
{
	// ...
}

value

Контекстное ключевое слово value используется в методе доступа set в объявлениях свойства и индексатора для получения присваемого значения.

var

Контекстное ключевое слово var используется для неявно типизированных пременных. Строгий тип для неявно типизированных переменных вычисляется на этапе компиляции. Пример:

var i = 0;

when (условие фильтра)

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

where (ограничение универсального типа)

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

where (предложение запроса)

Контекстное ключевое слово where используется в запросах LINQ для указания условия фильтра объектов. Пример:

IEnumerable<string> aNames =
    from name in names
    where name != null && name.Length > 0
    where name[0] == 'A' || name[0] == 'a'
    select name;

with

Контекстное ключевое слово with нужно для создания своего параметра с другими свойствами/полями. Пример:

public record Employee(int Id, int DepartmentId, string FirstName, string LastName);
// ...
var emp1 = new Employee(1, 1, "Иван", "Иванов");
// ...
var emp2 = emp1 with { Id = 2,  FirstName = "Пётр"};

yield

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

// ...
yield return expression;
// ...
yield break;