Menu
Coddy logo textTech

Шпаргалка по C#

Последнее обновление

Hello World и структура программы

Операторы верхнего уровня (с .NET 6) позволяют обойтись без шаблонного класса.

ЭлементКод
Программа верхнего уровняConsole.WriteLine("Hello, World!");
Импортировать пространство имёнusing System;
Классическая точка входаstatic void Main(string[] args) { ... }
Вывести строкуConsole.WriteLine("text");
Считать строкуstring s = Console.ReadLine();
Интерполяция строкConsole.WriteLine($"Hi {name}");
Комментарии// line и /* block */

Типы данных

ТипОписание
int32-битное знаковое целое
long64-битное знаковое целое
double / floatЧисла с плавающей точкой
decimalДесятичный тип высокой точности (деньги)
booltrue или false
charОдин символ Unicode
stringНеизменяемый текст
varКомпилятор выводит тип
int?Значимый тип, допускающий null

Переменные

ОперацияСинтаксис
Объявить и инициализироватьint x = 5;
Вывод типаvar name = "Ada";
Константаconst double Pi = 3.14159;
Поле только для чтенияreadonly int id;
Ссылка, допускающая nullstring? maybe = null;
Объединение с nullvar y = maybe ?? "default";
Условный доступ при nullint? len = text?.Length;

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

КонструкцияСинтаксис
If / elseif (x > 0) { ... } else { ... }
Оператор switchswitch (n) { case 1: ...; break; default: ...; }
Switch-выражениеvar s = n switch { 1 => "one", _ => "other" };
Цикл whilewhile (i < n) { ... }
Цикл do-whiledo { ... } while (i < n);
Цикл forfor (int i = 0; i < n; i++) { ... }
Цикл foreachforeach (var item in list) { ... }
Break / continuebreak; выходит из цикла, continue; переходит к следующей итерации

Методы

ОперацияСинтаксис
Определить методint Add(int a, int b) { return a + b; }
С телом-выражениемint Add(int a, int b) => a + b;
Без возвращаемого значенияvoid Greet() { ... }
Необязательный параметрint Pow(int b, int e = 2) { ... }
Именованные аргументыPow(b: 2, e: 3);
Out-параметрbool TryParse(string s, out int n) { ... }
Статический методstatic int Square(int x) => x * x;
Лямбда-выражениеFunc<int, int> f = x => x * 2;

Классы и ООП

ОперацияСинтаксис
Определить классclass Dog { ... }
Автосвойствоpublic string Name { get; set; }
Свойство только для чтенияpublic int Id { get; }
Конструкторpublic Dog(string name) { Name = name; }
Создать объектvar d = new Dog("Rex");
Наследованиеclass Puppy : Dog { ... }
Интерфейсinterface IRunnable { void Run(); }
Переопределить методpublic override void Speak() { ... }
Record (неизменяемый)record Point(int X, int Y);

Коллекции

Обобщённые коллекции из System.Collections.Generic.

ТипПрименение и пример
List<T>Динамический массив: list.Add(1); list.Count;
Dictionary<K, V>Ключ-значение: dict["a"] = 1; dict.ContainsKey("a");
HashSet<T>Уникальные значения: set.Add(5); set.Contains(5);
Queue<T>FIFO: q.Enqueue(x); q.Dequeue();
Stack<T>LIFO: s.Push(x); s.Pop();
Массивint[] nums = { 1, 2, 3 };
Инициализатор коллекцииvar l = new List<int> { 1, 2, 3 };
Обойти словарьforeach (var kv in dict) { kv.Key; kv.Value; }

LINQ

Удобные запросы к коллекциям; из System.Linq.

ОперацияСинтаксис
Фильтрацияnums.Where(n => n > 0)
Проекция / преобразованиеnums.Select(n => n * 2)
Сортировкаnums.OrderBy(n => n) / OrderByDescending(...)
Первое совпадениеnums.First(n => n > 5) / FirstOrDefault(...)
Any / allnums.Any(n => n < 0) / nums.All(n => n > 0)
Посчитать совпаденияnums.Count(n => n > 0)
Агрегацияnums.Sum(), nums.Max(), nums.Average()
Группировкаitems.GroupBy(i => i.Category)
Материализация.ToList() / .ToArray()

Частые паттерны (свойства, async)

ПаттернСинтаксис
Асинхронный методasync Task<int> GetAsync() { ... }
Ожидание задачиvar result = await GetAsync();
Try / catchtry { ... } catch (Exception e) { ... }
Finallyfinally { ... } выполняется всегда
Using (освобождение ресурса)using var file = File.OpenRead(path);
Форматирование строк$"Total: {amount:C}"
Обобщённый классclass Box<T> { public T Value; }
Сопоставление с образцомif (obj is Dog d) { d.Bark(); }

Синтаксис C#, коллекции и запросы LINQ, которые нужны чаще всего, на одной странице. Эта шпаргалка по C# - быстрый справочник для написания кода на C#: типы данных, управление потоком, классы, коллекции List/Dictionary, LINQ, а также паттерны свойств и async, которые определяют идиоматичный код .NET.

Всё здесь - стандартный C# на .NET, запускаемый через CLI dotnet. Копируйте нужное или попробуйте любой фрагмент вживую в playground для C# - без установки SDK.

Часто задаваемые вопросы по шпаргалке C#

Эта шпаргалка по C# бесплатна?
Да. Эта шпаргалка по C# полностью бесплатна, регистрация не требуется. Добавьте её в закладки и возвращайтесь, когда нужно посмотреть синтаксис, коллекцию или метод LINQ.
В чём разница между значимыми и ссылочными типами в C#?
Значимые типы (int, double, bool, struct, enum) хранят свои данные напрямую и копируются при присваивании или передаче в метод - изменение копии не затрагивает оригинал. Ссылочные типы (class, string, массивы, List<T>) хранят ссылку на данные в куче, поэтому две переменные могут указывать на один объект, и изменение через одну видно через другую. string - ссылочный тип, но ведёт себя как неизменяемый.
Что такое LINQ и когда его использовать?
LINQ (Language Integrated Query) - это набор методов вроде Where, Select и OrderBy, которые позволяют фильтровать, преобразовывать и агрегировать коллекции читаемыми цепочками вызовов вместо ручных циклов. Используйте его всякий раз, когда иначе вы написали бы цикл для построения отфильтрованного или преобразованного списка - это лаконично и вычисляется лениво, пока вы не вызовете ToList() или не начнёте перебор.
Можно ли практиковать C# онлайн?
Да. Откройте playground для C#, чтобы выполнить любой фрагмент из этой шпаргалки прямо в браузере - без установки SDK. А если нужна структура, бесплатный интерактивный курс C# от Coddy шаг за шагом проведёт вас от переменных и циклов до классов, коллекций и LINQ.
Подходит ли эта шпаргалка для начинающих?
Да. Она построена от самых распространённых строительных блоков (типы, управление потоком, методы) к продвинутым (LINQ, async, дженерики), так что верхние разделы можно использовать с первого дня и постепенно осваивать остальное.
Coddy programming languages illustration

Изучайте C# с Coddy

НАЧАТЬ