Перейти к основному содержимому

Ключевые слова языка C#

Разработчику Архитектору

Ключевые слова в C#​

Управление потоком выполнения​

Ключевое словоНазначениеПример
ifУсловное выполнение блока кода при истинности выраженияif (count > 0) Process();
elseАльтернативное выполнение при ложности условия ifif (valid) Accept(); else Reject();
switchМножественный выбор на основе значения выраженияswitch (status) { case 1: ... }
caseМетка варианта в конструкции switchcase ConnectionState.Open:
defaultОбработчик значений по умолчанию в switchdefault: HandleUnknown();
breakПрерывание выполнения цикла или секции switchif (found) break;
continueПереход к следующей итерации циклаif (skip) continue;
gotoБезусловный переход к меткеgoto retry;
returnВозврат значения из метода и завершение его выполненияreturn result;
yieldВозврат элемента последовательности в итератореyield return item;

Циклы​

Ключевое словоНазначениеПример
forЦикл с инициализацией, условием и шагомfor (int i = 0; i < 10; i++) { ... }
foreachИтерация по элементам коллекцииforeach (var item in list) { ... }
whileЦикл с проверкой условия перед итерациейwhile (active) { ... }
doЦикл с проверкой условия после итерацииdo { ... } while (retry);

Обработка исключений​

Ключевое словоНазначениеПример
tryБлок кода с потенциальными исключениямиtry { Operation(); }
catchОбработчик перехваченного исключенияcatch (IOException ex) { ... }
finallyБлок гарантированного выполнения после tryfinally { Cleanup(); }
throwГенерация исключенияthrow new ArgumentException();

Типы и члены​

Ключевое словоНазначениеПример
classОбъявление ссылочного типаclass Customer { }
structОбъявление типа значенияstruct Point { }
interfaceОбъявление контракта для типовinterface ILogger { void Log(); }
enumОбъявление перечисленияenum Status { Active, Inactive }
recordОбъявление неизменяемого типа данныхrecord Person(string Name);
delegateОбъявление типа делегатаdelegate void Handler();
eventОбъявление событияevent EventHandler Changed;
namespaceОрганизация кода в иерархию имёнnamespace MyApp.Data { }
usingИмпорт пространства имён или управление ресурсамиusing var file = Open();

Модификаторы доступа​

Ключевое словоНазначениеПример
publicДоступ из любого кодаpublic int Id { get; }
privateДоступ только внутри содержащего типаprivate string secret;
protectedДоступ внутри типа и его наследниковprotected void Init() { }
internalДоступ внутри сборкиinternal class Helper { }
protected internalДоступ внутри сборки или из наследниковprotected internal void Share() { }
private protectedДоступ из наследников внутри сборкиprivate protected void Limited() { }

Модификаторы членов​

Ключевое словоНазначениеПример
staticПринадлежность члена типу, а не экземпляруstatic int Counter;
readonlyНеизменяемость поля после инициализацииreadonly DateTime created;
constКомпиляционная константаconst double Pi = 3.14159;
sealedЗапрет наследования класса или переопределения методаsealed class Utility { }
abstractОбъявление нереализованного члена для наследниковabstract void Execute();
virtualРазрешение переопределения метода в наследникахvirtual void Render() { }
overrideПереопределение виртуального члена базового типаoverride void Render() { }
newСокрытие члена базового типаnew void Log() { }
partialРазделение объявления типа на несколько файловpartial class Generator { }
asyncОбъявление асинхронного методаasync Task LoadAsync() { }
unsafeРазрешение небезопасного кода с указателямиunsafe void Copy(byte* src) { }

Параметры и аргументы​

Ключевое словоНазначениеПример
paramsПередача переменного числа аргументовvoid Log(params string[] messages)
refПередача аргумента по ссылкеSwap(ref a, ref b);
outВыходной параметр для возврата значенияbool TryParse(string s, out int result)
inПередача аргумента по ссылке только для чтенияvoid Process(in Data item)
thisСсылка на текущий экземплярreturn this.Id;
baseДоступ к членам базового типаbase.Initialize();

Операторы и выражения​

Ключевое словоНазначениеПример
isПроверка совместимости типов или сопоставление с образцомif (obj is string s) { ... }
asБезопасное приведение типовvar text = obj as string;
typeofПолучение объекта System.Type для типаType t = typeof(Customer);
sizeofОпределение размера типа значения в байтахint size = sizeof(int);
checkedПроверка переполнения в арифметических операцияхchecked { sum = a + b; }
uncheckedОтключение проверки переполненияunchecked { hash = x * 31 + y; }
stackallocВыделение памяти в стекеSpan<int> buffer = stackalloc int[100];
trueПерегрузка логического оператораpublic static bool operator true(Box b)
falseПерегрузка логического оператораpublic static bool operator false(Box b)
operatorПерегрузка операторов или преобразованийpublic static Box operator +(Box a, Box b)
implicitОбъявление неявного преобразования типовpublic static implicit operator string(Id id)
explicitОбъявление явного преобразования типовpublic static explicit operator Id(string s)

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

Ключевое словоНазначениеПример
varВывод типа переменной компиляторомvar list = new List<int>();
dynamicОтложенная проверка типов до времени выполненияdynamic obj = GetObject();
nameofПолучение имени символа в виде строкиthrow new ArgumentNullException(nameof(value));
whenДополнительное условие в фильтре исключений или сопоставлении с образцомcatch (Exception ex) when (ex.HResult == 0x80070005)
globalЯвное указание глобального пространства имёнglobal::System.Console.WriteLine();
valueЗначение свойства в аксессорахset { _field = value; }
getАксессор чтения свойства или индексатораget { return _value; }
setАксессор записи свойства или индексатораset { _value = value; }
initАксессор инициализации свойства только при созданииpublic string Name { get; init; }
addАксессор добавления обработчика событияadd { _handlers += value; }
removeАксессор удаления обработчика событияremove { _handlers -= value; }
whereОграничение универсального параметра типаwhere T : class
aliasСоздание псевдонима для типа в директиве externextern alias Legacy;
ascendingСортировка по возрастанию в запросахorderby x ascending
descendingСортировка по убыванию в запросахorderby x descending
addАксессор добавления обработчика событияadd { _handlers += value; }
raiseУстаревший аксессор события в C++/CLI—
moduleОбъявление модуля в C++/CLI—
propertyОбъявление свойства в C++/CLI—
assemblyУказание уровня доступа на уровне сборки[assembly: InternalsVisibleTo("Test")]
typeУказание типа в атрибутах[type: Obsolete]
methodУказание метода в атрибутах[method: STAThread]
fieldУказание поля в атрибутах[field: NonSerialized]
eventУказание события в атрибутах[event: FieldNotUsed]
paramУказание параметра в атрибутах[param: MarshalAs(UnmanagedType.LPStr)]
propertyУказание свойства в атрибутах[property: DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
returnУказание возвращаемого значения в атрибутах[return: MarshalAs(UnmanagedType.Bool)]

Логические операторы​

Ключевое словоНазначениеПример
andЛогическое И в выражениях сопоставления с образцомif (x is > 0 and < 100) { }
orЛогическое ИЛИ в выражениях сопоставления с образцомif (status is Ready or Completed) { }
notЛогическое НЕ в выражениях сопоставления с образцомif (x is not null) { }

Асинхронное программирование​

Ключевое словоНазначениеПример
awaitОжидание завершения асинхронной операцииvar result = await FetchAsync();
lockБлокировка объекта для синхронизации потоковlock (_sync) { Update(); }
volatileУказание на переменную, доступную из нескольких потоковvolatile bool flag;

LINQ и запросы​

Ключевое словоНазначениеПример
fromНачало выражения запросаfrom item in collection
whereФильтрация элементов в запросеwhere item.Price > 100
selectПроекция результатов запросаselect item.Name
groupГруппировка элементов в запросеgroup item by item.Category
intoХранение промежуточного результата запросаgroup item by item.Category into g
orderbyСортировка элементов в запросеorderby item.Name ascending
joinСоединение двух последовательностейjoin order in orders on customer.Id equals order.CustomerId
letВведение переменной в выражение запросаlet total = item.Price * item.Quantity
onУказание ключей соединения в joinon x.Key equals y.Key
equalsОператор сравнения в joinon customer.Id equals order.CustomerId
byУказание ключа группировки в groupgroup item by item.Category
ascendingСортировка по возрастаниюorderby item.Price ascending
descendingСортировка по убываниюorderby item.Price descending

Управление памятью​

Ключевое словоНазначениеПример
fixedЗакрепление объекта в памяти для указателейfixed (char* p = str) { }
nullЛитерал, представляющий отсутствие ссылкиstring s = null;
null!Подавление предупреждения о возможном значении nullreturn GetValue()!;