5.05. Встроенные функции в C#
Встроенные функции в C#
В языке C# отсутствуют глобальные функции в стиле скриптовых языков. Все базовые операции реализованы через статические методы системных классов пространства имён System. Ниже представлен справочник ключевых методов и свойств, выполняющих роль встроенных функций.
Системные операции и управление средой
| Метод или свойство | Назначение | Пример |
|---|---|---|
Environment.Exit(code) | Завершение процесса с указанным кодом возврата | Environment.Exit(0); |
Environment.GetEnvironmentVariable(name) | Получение значения переменной окружения | string path = Environment.GetEnvironmentVariable("PATH"); |
Environment.NewLine | Строка для перехода на новую строку, соответствующая ОС | Console.WriteLine("Line1" + Environment.NewLine + "Line2"); |
GC.Collect() | Принудительный запуск сборщика мусора | GC.Collect(); |
GC.WaitForPendingFinalizers() | Ожидание завершения всех финализаторов | GC.WaitForPendingFinalizers(); |
Ввод и вывод
| Метод или свойство | Назначение | Пример |
|---|---|---|
Console.WriteLine(text) | Вывод текста с переходом на новую строку | Console.WriteLine("Привет"); |
Console.Write(text) | Вывод текста без перехода на новую строку | Console.Write("Введите имя: "); |
Console.ReadLine() | Чтение строки из стандартного ввода | string name = Console.ReadLine(); |
Console.ReadKey() | Чтение нажатой клавиши без ожидания Enter | ConsoleKeyInfo key = Console.ReadKey(); |
Console.Clear() | Очистка консоли | Console.Clear(); |
Математические операции
| Метод или свойство | Назначение | Пример |
|---|---|---|
Math.Abs(value) | Абсолютное значение числа | int x = Math.Abs(-5); // 5 |
Math.Sqrt(value) | Квадратный корень | double r = Math.Sqrt(16); // 4.0 |
Math.Pow(base, power) | Возведение в степень | double v = Math.Pow(2, 3); // 8.0 |
Math.Round(value) | Округление до ближайшего целого | double r = Math.Round(3.7); // 4.0 |
Math.Floor(value) | Округление вниз | double f = Math.Floor(3.9); // 3.0 |
Math.Ceiling(value) | Округление вверх | double c = Math.Ceiling(3.1); // 4.0 |
Math.Max(a, b) | Максимальное из двух значений | int m = Math.Max(10, 20); // 20 |
Math.Min(a, b) | Минимальное из двух значений | int m = Math.Min(10, 20); // 10 |
Math.PI | Математическая константа π | double circle = 2 * Math.PI * radius; |
Math.E | Основание натурального логарифма | double exp = Math.Pow(Math.E, 2); |
Преобразование типов
| Метод или свойство | Назначение | Пример |
|---|---|---|
Convert.ToInt32(value) | Преобразование в 32-битное целое | int n = Convert.ToInt32("42"); |
Convert.ToDouble(value) | Преобразование в число с плавающей точкой | double d = Convert.ToDouble("3.14"); |
Convert.ToString(value) | Преобразование в строку | string s = Convert.ToString(100); |
int.Parse(text) | Анализ строки в целое число | int n = int.Parse("123"); |
int.TryParse(text, out result) | Безопасный анализ строки в целое | bool ok = int.TryParse("abc", out int n); |
bool.Parse(text) | Анализ строки в логическое значение | bool b = bool.Parse("true"); |
Guid.NewGuid() | Создание нового уникального идентификатора | Guid id = Guid.NewGuid(); |
Работа со строками
| Метод или свойство | Назначение | Пример |
|---|---|---|
String.IsNullOrEmpty(value) | Проверка на null или пустую строку | bool empty = String.IsNullOrEmpty(s); |
String.IsNullOrWhiteSpace(value) | Проверка на null, пустоту или пробелы | bool blank = String.IsNullOrWhiteSpace(s); |
String.Join(separator, values) | Объединение элементов массива в строку | string csv = String.Join(",", items); |
String.Format(format, args) | Форматирование строки | string msg = String.Format("Цена: {0:C}", price); |
String.Concat(a, b) | Объединение строк | string full = String.Concat("Hello", "World"); |
String.Empty | Пустая строка | string s = String.Empty; |
Работа с массивами
| Метод или свойство | Назначение | Пример |
|---|---|---|
Array.Sort(array) | Сортировка элементов массива | Array.Sort(numbers); |
Array.Reverse(array) | Разворот массива | Array.Reverse(items); |
Array.IndexOf(array, value) | Поиск индекса элемента | int pos = Array.IndexOf(data, 42); |
Array.Resize(ref array, newSize) | Изменение размера массива | Array.Resize(ref buffer, 100); |
Array.Clear(array, index, length) | Обнуление участка массива | Array.Clear(flags, 0, flags.Length); |
Работа с датами и временем
| Метод или свойство | Назначение | Пример |
|---|---|---|
DateTime.Now | Текущие дата и время | DateTime now = DateTime.Now; |
DateTime.UtcNow | Текущие дата и время в UTC | DateTime utc = DateTime.UtcNow; |
DateTime.Today | Текущая дата без времени | DateTime today = DateTime.Today; |
DateTime.Parse(text) | Анализ строки в дату | DateTime d = DateTime.Parse("2026-02-15"); |
DateTime.TryParse(text, out result) | Безопасный анализ строки в дату | bool ok = DateTime.TryParse(input, out DateTime dt); |
TimeSpan.FromSeconds(seconds) | Создание интервала из секунд | TimeSpan t = TimeSpan.FromSeconds(60); |
DateTimeOffset.Now | Текущая дата и время с часовым поясом | DateTimeOffset dto = DateTimeOffset.Now; |
Отладка и трассировка
| Метод или свойство | Назначение | Пример |
|---|---|---|
Debug.WriteLine(message) | Запись сообщения в отладочный вывод | Debug.WriteLine("Загрузка завершена"); |
Debug.Assert(condition) | Проверка условия в режиме отладки | Debug.Assert(index >= 0); |
Trace.WriteLine(message) | Запись сообщения в трассировку | Trace.WriteLine("Обработка элемента"); |
Генерация случайных значений
| Метод или свойство | Назначение | Пример |
|---|---|---|
Random.Next() | Случайное целое число | int r = random.Next(); |
Random.Next(max) | Случайное число от 0 до max-1 | int dice = random.Next(6) + 1; |
Random.Next(min, max) | Случайное число в диапазоне | int port = random.Next(1024, 65536); |
Random.NextDouble() | Случайное число от 0.0 до 1.0 | double factor = random.NextDouble(); |
Работа с файловой системой
| Метод или свойство | Назначение | Пример |
|---|---|---|
File.ReadAllText(path) | Чтение всего содержимого файла как строки | string content = File.ReadAllText("config.txt"); |
File.WriteAllText(path, text) | Запись строки в файл, перезаписывая существующий | File.WriteAllText("log.txt", "Событие произошло"); |
File.AppendAllText(path, text) | Добавление текста в конец файла | File.AppendAllText("log.txt", "\nНовая запись"); |
File.Exists(path) | Проверка существования файла | bool exists = File.Exists("data.bin"); |
File.Delete(path) | Удаление файла | File.Delete("temp.tmp"); |
Directory.CreateDirectory(path) | Создание каталога и всех промежуточных каталогов | Directory.CreateDirectory("logs/2026/02"); |
Directory.Exists(path) | Проверка существования каталога | bool exists = Directory.Exists("backup"); |
Directory.GetFiles(path) | Получение массива путей ко всем файлам в каталоге | string[] files = Directory.GetFiles("docs"); |
Directory.GetDirectories(path) | Получение массива путей ко всем подкаталогам | string[] dirs = Directory.GetDirectories("projects"); |
Path.Combine(part1, part2) | Безопасное объединение частей пути с учётом ОС | string fullPath = Path.Combine("data", "users", "list.csv"); |
Path.GetExtension(path) | Получение расширения файла с точкой | string ext = Path.GetExtension("report.pdf"); // ".pdf" |
Path.GetFileName(path) | Получение имени файла из полного пути | string name = Path.GetFileName("C:/docs/readme.txt"); // "readme.txt" |
Работа с потоками данных
| Метод или свойство | Назначение | Пример |
|---|---|---|
FileStream.Read(buffer, offset, count) | Чтение байтов из файла в буфер | int read = fs.Read(buffer, 0, buffer.Length); |
FileStream.Write(buffer, offset, count) | Запись байтов из буфера в файл | fs.Write(data, 0, data.Length); |
MemoryStream.ToArray() | Преобразование содержимого потока в массив байтов | byte[] bytes = ms.ToArray(); |
StreamReader.ReadLine() | Чтение одной строки из текстового потока | string line = reader.ReadLine(); |
StreamWriter.WriteLine(text) | Запись строки с переводом строки в текстовый поток | writer.WriteLine("Заголовок"); |
Stream.Flush() | Сброс буферизованных данных на устройство | stream.Flush(); |
Stream.Close() | Закрытие потока и освобождение ресурсов | stream.Close(); |
Stream.Dispose() | Освобождение неуправляемых ресурсов потока | stream.Dispose(); |
Сетевые операции
| Метод или свойство | Назначение | Пример |
|---|---|---|
HttpClient.GetAsync(uri) | Асинхронный HTTP-запрос методом GET | HttpResponseMessage response = await client.GetAsync("https://api.example.com/data"); |
HttpClient.PostAsync(uri, content) | Асинхронный HTTP-запрос методом POST | var response = await client.PostAsync("https://api.example.com/users", jsonContent); |
HttpResponseMessage.Content.ReadAsStringAsync() | Чтение тела ответа как строки | string body = await response.Content.ReadAsStringAsync(); |
IPAddress.Parse(address) | Преобразование строкового представления IP в объект | IPAddress ip = IPAddress.Parse("192.168.1.1"); |
Dns.GetHostAddresses(host) | Получение IP-адресов по доменному имени | IPAddress[] ips = Dns.GetHostAddresses("example.com"); |
Работа с типами и рефлексией
| Метод или свойство | Назначение | Пример |
|---|---|---|
typeof(T) | Получение объекта Type для указанного типа во время компиляции | Type t = typeof(string); |
Object.GetType() | Получение объекта Type для экземпляра во время выполнения | Type t = obj.GetType(); |
Type.GetMethod(name) | Получение информации о методе по имени | MethodInfo m = type.GetMethod("Calculate"); |
Type.GetProperties() | Получение всех публичных свойств типа | PropertyInfo[] props = type.GetProperties(); |
Activator.CreateInstance(type) | Создание экземпляра типа через рефлексию | object instance = Activator.CreateInstance(typeof(User)); |
Convert.ChangeType(value, targetType) | Преобразование объекта к указанному типу | int number = (int)Convert.ChangeType("42", typeof(int)); |
Кодировка текста
| Метод или свойство | Назначение | Пример |
|---|---|---|
Encoding.UTF8.GetBytes(text) | Преобразование строки в массив байтов в кодировке UTF-8 | byte[] bytes = Encoding.UTF8.GetBytes("Привет"); |
Encoding.UTF8.GetString(bytes) | Преобразование массива байтов в строку из кодировки UTF-8 | string text = Encoding.UTF8.GetString(bytes); |
Encoding.ASCII.GetBytes(text) | Преобразование строки в массив байтов в кодировке ASCII | byte[] ascii = Encoding.ASCII.GetBytes("Hello"); |
Параллельное выполнение
| Метод или свойство | Назначение | Пример |
|---|---|---|
Task.Run(action) | Запуск делегата в фоновом потоке пула потоков | Task.Run(() => ProcessData()); |
Task.WaitAll(tasks) | Ожидание завершения всех переданных задач | Task.WaitAll(task1, task2, task3); |
Thread.Sleep(milliseconds) | Приостановка выполнения текущего потока | Thread.Sleep(1000); // пауза 1 секунда |
Interlocked.Increment(ref location) | Атомарное увеличение целочисленного значения | Interlocked.Increment(ref counter); |
Monitor.Enter(obj) | Захват монитора для синхронизации | Monitor.Enter(lockObject); |
Monitor.Exit(obj) | Освобождение ранее захваченного монитора | Monitor.Exit(lockObject); |
Работа с атрибутами
| Метод или свойство | Назначение | Пример |
|---|---|---|
Attribute.GetCustomAttribute(element, type) | Получение одного пользовательского атрибута | var attr = Attribute.GetCustomAttribute(method, typeof(DescriptionAttribute)); |
Attribute.GetCustomAttributes(element) | Получение всех пользовательских атрибутов элемента | object[] attrs = Attribute.GetCustomAttributes(type); |
Управление памятью и ресурсами
| Метод или свойство | Назначение | Пример |
|---|---|---|
IDisposable.Dispose() | Явное освобождение неуправляемых ресурсов | connection.Dispose(); |
using (resource) | Автоматическое вызывание Dispose() при выходе из блока | using (var file = File.OpenRead("data.bin")) { ... } |
WeakReference.Target | Получение ссылки на объект без предотвращения сборки мусора | object obj = weakRef.Target; |
Работа с коллекциями
| Метод или свойство | Назначение | Пример |
|---|---|---|
List<T>.Add(item) | Добавление элемента в конец списка | users.Add(new User()); |
List<T>.Remove(item) | Удаление первого вхождения элемента из списка | users.Remove(deletedUser); |
List<T>.Find(predicate) | Поиск первого элемента, удовлетворяющего условию | User admin = users.Find(u => u.IsAdmin); |
List<T>.Sort() | Сортировка элементов списка по умолчанию | numbers.Sort(); |
Dictionary<TKey, TValue>.Add(key, value) | Добавление пары ключ-значение в словарь | settings.Add("timeout", 30); |
Dictionary<TKey, TValue>.TryGetValue(key, out value) | Безопасное получение значения по ключу | bool found = settings.TryGetValue("timeout", out int timeout); |
Dictionary<TKey, TValue>.ContainsKey(key) | Проверка наличия ключа в словаре | bool hasKey = settings.ContainsKey("theme"); |
Enumerable.Where(source, predicate) | Фильтрация последовательности по условию | var adults = people.Where(p => p.Age >= 18); |
Enumerable.Select(source, selector) | Проекция каждого элемента в новую форму | var names = users.Select(u => u.Name); |
Enumerable.ToList(source) | Материализация последовательности в список | List<int> list = numbers.Where(n => n > 0).ToList(); |
Enumerable.ToArray(source) | Материализация последовательности в массив | int[] array = numbers.ToArray(); |
Enumerable.Count(source) | Подсчёт количества элементов в последовательности | int total = items.Count(); |
Enumerable.Any(source) | Проверка наличия хотя бы одного элемента | bool hasItems = collection.Any(); |
Enumerable.First(source) | Получение первого элемента последовательности | User first = users.First(); |
Enumerable.FirstOrDefault(source) | Получение первого элемента или значения по умолчанию | User first = users.FirstOrDefault(); |
Сериализация и десериализация
| Метод или свойство | Назначение | Пример |
|---|---|---|
JsonSerializer.Serialize<T>(value) | Преобразование объекта в строку JSON | string json = JsonSerializer.Serialize(user); |
JsonSerializer.Deserialize<T>(json) | Преобразование строки JSON в объект | User user = JsonSerializer.Deserialize<User>(json); |
XmlSerializer.Serialize(stream, o) | Запись объекта в XML-формат | serializer.Serialize(stream, config); |
XmlSerializer.Deserialize(stream) | Чтение объекта из XML-формата | Config cfg = (Config)serializer.Deserialize(stream); |
BinaryFormatter.Serialize(stream, graph) | Бинарная сериализация объекта | formatter.Serialize(stream, data); |
BinaryFormatter.Deserialize(stream) | Восстановление объекта из бинарного представления | object obj = formatter.Deserialize(stream); |
Криптографические операции
| Метод или свойство | Назначение | Пример |
|---|---|---|
SHA256.HashData(bytes) | Вычисление хеша SHA-256 для массива байтов | byte[] hash = SHA256.HashData(data); |
MD5.HashData(bytes) | Вычисление хеша MD5 для массива байтов | byte[] hash = MD5.HashData(data); |
Aes.Create() | Создание экземпляра алгоритма AES для шифрования | using Aes aes = Aes.Create(); |
RSACryptoServiceProvider.Encrypt(data, fOAEP) | Шифрование данных открытым ключом RSA | byte[] cipher = rsa.Encrypt(plain, true); |
RSACryptoServiceProvider.Decrypt(data, fOAEP) | Расшифровка данных закрытым ключом RSA | byte[] plain = rsa.Decrypt(cipher, true); |
ProtectedData.Protect(data, entropy, scope) | Шифрование данных с использованием DPAPI Windows | byte[] protected = ProtectedData.Protect(data, null, DataProtectionScope.CurrentUser); |
ProtectedData.Unprotect(data, entropy, scope) | Расшифровка данных, защищённых DPAPI | byte[] plain = ProtectedData.Unprotect(protected, null, DataProtectionScope.CurrentUser); |
Работа с процессами
| Метод или свойство | Назначение | Пример |
|---|---|---|
Process.Start(fileName) | Запуск процесса по имени исполняемого файла | Process.Start("notepad.exe"); |
Process.Start(startInfo) | Запуск процесса с расширенными параметрами | Process.Start(new ProcessStartInfo { FileName = "cmd.exe", Arguments = "/c dir" }); |
Process.GetProcesses() | Получение массива всех запущенных процессов | Process[] processes = Process.GetProcesses(); |
Process.GetCurrentProcess() | Получение объекта текущего процесса | Process current = Process.GetCurrentProcess(); |
Process.Kill() | Принудительное завершение процесса | process.Kill(); |
Process.WaitForExit() | Ожидание завершения процесса | process.WaitForExit(); |
Работа с исключениями
| Метод или свойство | Назначение | Пример |
|---|---|---|
Exception.Message | Текстовое описание ошибки | string msg = ex.Message; |
Exception.StackTrace | Информация о стеке вызовов на момент исключения | string trace = ex.StackTrace; |
Exception.InnerException | Вложенное исключение, вызвавшее текущее | Exception inner = ex.InnerException; |
throw | Повторное выбрасывание перехваченного исключения | catch (Exception ex) { Log(ex); throw; } |
throw exception | Выбрасывание нового или существующего исключения | if (value < 0) throw new ArgumentException("Значение не может быть отрицательным"); |
Локализация и культура
| Метод или свойство | Назначение | Пример |
|---|---|---|
CultureInfo.CurrentCulture | Текущая культура потока для форматирования | CultureInfo culture = CultureInfo.CurrentCulture; |
CultureInfo.CurrentUICulture | Текущая культура для локализованных ресурсов интерфейса | CultureInfo ui = CultureInfo.CurrentUICulture; |
CultureInfo.GetCultureInfo(name) | Получение объекта культуры по имени | CultureInfo ru = CultureInfo.GetCultureInfo("ru-RU"); |
DateTime.ToString(format, culture) | Форматирование даты с учётом культуры | string s = date.ToString("D", ru); |
Работа с реестром Windows
| Метод или свойство | Назначение | Пример |
|---|---|---|
Registry.CurrentUser | Корневой раздел HKEY_CURRENT_USER | RegistryKey key = Registry.CurrentUser.OpenSubKey("Software"); |
Registry.LocalMachine | Корневой раздел HKEY_LOCAL_MACHINE | RegistryKey key = Registry.LocalMachine.OpenSubKey("SYSTEM"); |
RegistryKey.GetValue(name) | Чтение значения параметра реестра | object val = key.GetValue("Version"); |
RegistryKey.SetValue(name, value) | Запись значения параметра реестра | key.SetValue("InstallPath", @"C:\App"); |
RegistryKey.CreateSubKey(name) | Создание нового подраздела реестра | RegistryKey sub = key.CreateSubKey("Settings"); |
Полезные утилиты
| Метод или свойство | Назначение | Пример |
|---|---|---|
Stopwatch.StartNew() | Создание и запуск нового таймера | Stopwatch sw = Stopwatch.StartNew(); |
Stopwatch.Elapsed | Получение прошедшего времени с момента запуска | TimeSpan elapsed = sw.Elapsed; |
Enum.Parse<TEnum>(value) | Преобразование строки в значение перечисления | DayOfWeek day = Enum.Parse<DayOfWeek>("Monday"); |
Enum.TryParse<TEnum>(value, out result) | Безопасное преобразование строки в перечисление | bool ok = Enum.TryParse<LogLevel>("Debug", out LogLevel level); |
Enum.GetValues<TEnum>() | Получение массива всех значений перечисления | Array values = Enum.GetValues<LogLevel>(); |
Enum.GetNames<TEnum>() | Получение массива имён всех значений перечисления | string[] names = Enum.GetNames<DayOfWeek>(); |
Nullable.GetUnderlyingType(type) | Получение базового типа для типа, допускающего null | Type t = Nullable.GetUnderlyingType(typeof(int?)); // typeof(int) |
StringComparer.OrdinalIgnoreCase | Сравнитель строк без учёта регистра | var dict = new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase); |