Они позволяют упростить логику проверки на null, безопасно извлекать значения и подставлять значения по умолчанию без лишнего кода. Отлично подходят для случаев, когда нужно работать с value-типами, но предусмотреть возможность их отсутствия.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24🤝10👍6❤4
👍6🔥4❤1
Init-only свойства для безопасной инициализации объекта!
Сейчас научимся задавать значения свойств только при создании объекта — с помощью аксессора
Для начала подключим стандартные библиотеку
Опишем простой класс
Создадим экземпляр объекта и зададим значения свойств через инициализатор:
Попробуем изменить значение после создания объекта — компилятор не даст этого сделать:
🔥
➡️ C# Ready | #практика
Сейчас научимся задавать значения свойств только при создании объекта — с помощью аксессора
init
. Удобно для создания неизменяемых структур без лишнего шаблонного кода.Для начала подключим стандартные библиотеку
using System;
Опишем простой класс
Person
с двумя свойствами, доступными только для инициализации:class Person
{
public string Name { get; init; }
public int Age { get; init; }
}
Создадим экземпляр объекта и зададим значения свойств через инициализатор:
var person = new Person
{
Name = "Анна",
Age = 28
};
Console.WriteLine($"{person.Name}, {person.Age} лет");
Попробуем изменить значение после создания объекта — компилятор не даст этого сделать:
person.Age = 29; // Ошибка: свойство доступно только для инициализации
🔥
Init-only
свойства позволяют задать значение один раз и гарантируют неизменяемость объекта после созданияPlease open Telegram to view this post
VIEW IN TELEGRAM
🔥25❤11👍7🤝1
Пишем функцию
TruncateByWord
на , которая обрезает входной текст до заданного числа символов, не разрывая слова, и добавляет «…» в конце.В этой задаче:
• Проверяем, не превышает ли длина текста лимит — если нет, возвращаем исходную строку без изменений.
• Обрабатываем слишком маленький лимит): возвращаем строку только из точек нужной длины.
• Если пробел не найден, обрезаем ровно по чистому лимиту и добавляем «…».
Полезно, когда нужно показывать превью длинного текста так, чтобы они не обрывались посередине слова и оставались читабельными.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥11❤6🤝1
This media is not supported in your browser
VIEW IN TELEGRAM
Здесь вы найдёте базовые руководства по синтаксису языка, работу с переменными, операциями, массивами и строками, основы ООП, алгоритмы, структуры данных, а также практические задания и готовые программы для отработки навыков.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13🔥6👍4
Interpolated verbatim-строки для удобной многострочной интерполяции!
Сейчас научимся сочетать многострочные строковые литералы и интерполяцию — с помощью
Позволяет форматировать текст с переносами строк и подставлять значения переменных прямо в текст без экранирования символов.
Для начала зададим переменные, которые хотим вставить в шаблон текста:
Теперь создадим многострочную строку. Благодаря сочетанию
Важно: порядок
🔥 Это удобно, когда нужно вставлять переменные прямо в текст, использовать переносы строк и не экранировать кавычки
➡️ C# Ready | #практика
Сейчас научимся сочетать многострочные строковые литералы и интерполяцию — с помощью
$@
или @$
. Позволяет форматировать текст с переносами строк и подставлять значения переменных прямо в текст без экранирования символов.
Для начала зададим переменные, которые хотим вставить в шаблон текста:
string name = "Анна";
int messages = 5;
Теперь создадим многострочную строку. Благодаря сочетанию
$@
, можно использовать переносы строк и подставлять значения переменных прямо внутри литерала:var text = $@"Привет, {name}!
У вас {messages} новых сообщений.
Хорошего дня!";
Важно: порядок
$@
или @$
не имеет значения — оба варианта работают одинаково. Ниже пример с другим порядком:var info = @$"
Дата: {DateTime.Now:dd.MM.yyyy}
Сообщений: {messages}
";
🔥 Это удобно, когда нужно вставлять переменные прямо в текст, использовать переносы строк и не экранировать кавычки
"
или обратные слеши \
.Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤9🔥7
•
OrderByDescending()
— сортирует элементы коллекции в порядке убывания по заданному критерию (например, получить топовые значения, рейтинги или даты)•
Aggregate()
— выполняет агрегацию элементов коллекции с помощью пользовательской функции (сумма, произведение или даже сборка строки.🔥 — если узнал что-то новое
🤝 — если уже пользовался
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👍15🤝5❤4
Он позволяет создавать объект только при первом обращении к нему. Это ускоряет старт приложения и снижает нагрузку на память.
Что важно знать:
• ExecutionAndPublication — потокобезопасно, объект создаётся один раз.
• None — без синхронизации, быстрее, но небезопасно в потоках.
• PublicationOnly — несколько попыток, сохраняется первый успешный результат.
Этот способ помогает писать оптимальный и надёжный код, экономя ресурсы.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍8❤6🤝1