View on GitHub

School-IT

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

Главная

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

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

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

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

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

Список ключевых слов заимствован из документации Microsoft (https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/)

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

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

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

add alias and args ascending async await by descending dynamic equals file from get global group init into join let managed (соглашение вызова указателя функции) nameof nint not notnull nuint on or orderby partial (метод) partial (тип) record remove required scoped select set unmanaged (соглашение вызова указателя функции) unmanaged (ограничение обобщённого типа) value var when where (ограничение обобщённого типа) where (выражение запроса) with yield

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

abstract

Ключевое слово нужно для объявления абстрактного класса и его абстрактых элементов.

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

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


    abstract class Shape
    {
        public abstract double GetArea();
    }

    class Circle : Shape
    {
        private int _r;

        public Circle(int radius) => _r = radius;

        public override double GetArea() => Math.PI * _r * _r;
    }
	

as

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


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

base

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

bool

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

Значение по умолчанию для типа bool: false.


bool _checked = true;

Console.WriteLine(_checked ? "Проверено" : "Не проверено");

break

Пример в цикле foreach:


foreach(var e in Elems)
{
	if(e.IsFinal)
		break;
}

byte

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

case

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

catch

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


try
{
    ...
}
catch (Exception e)
{
    Console.WriteLine($"Failed: {e.Message}");
}

char

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

checked

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

Если в этом опереаторе происходит переполнение арифметической операции, то выдаётся исключение OverflowException.


uint a = uint.MaxValue;

unchecked
{
    Console.WriteLine(a + 5);  // output: 4
}

try
{
    checked
    {
        Console.WriteLine(a + 3);
    }
}
catch (OverflowException e)
{
    Console.WriteLine(e.Message);
}

class

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


class Circle
{
	private int _r;

	public Circle(int radius) => _r = radius;

	public double GetArea() => Math.PI * _r * _r;
}

const

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


const int CenterXY = 0;

continue

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

decimal

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

default

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

delegate

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

do

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

double

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

else

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


if(condition)
{
	// true
}
else
{
	// false
}

enum

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


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 используется для определения метода контроля на добавление делегата в событие.


class Events : IDrawingObject
{
    event EventHandler PreDrawEvent;

    event EventHandler IDrawingObject.OnDraw
    {
        add => PreDrawEvent += value;
        remove => PreDrawEvent -= value;
    }
}

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 };
	

file

Ключевое слово для создания области видимости - файл. Появилось в C# 11.

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 используется для определения метода контроля для удаления делегата из события.

required

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

scoped

Добавление scoped модификатора утверждает, что ваш код не будет продлевать время жизни переменной.

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;