Шаблоны проверки на null
Часть раздела Логика и управление потоком путешествия по C# на Coddy. Урок 33 из 66.
Проверка на null — важная часть написания надёжного кода на C#. Существует несколько шаблонов, которые можно использовать для безопасной проверки значений null.
Давайте рассмотрим распространённые шаблоны проверки на null:
Сначала — базовая проверка на null:
string name = null;
if (name == null)
{
Console.WriteLine("Name is null");
}
Ещё один распространённый шаблон — оператор условного доступа к null (?.), который безопасно обращается к членам потенциально имеющих значение null объектов:
string name = null;
int? length = name?.Length; // length будет null
Оператор объединения с null (??) предоставляет значение по умолчанию, когда выражение равно null:
string name = null;
string displayName = name ?? "Unknown"; // displayName будет "Unknown"
Вы также можете объединять эти шаблоны для более сложных сценариев:
string name = null;
int length = (name ?? "").Length; // length будет равен 0
Метод string.IsNullOrWhiteSpace() — это удобный способ проверить, является ли строка null, пустой или содержит только символы whitespace: всё за один вызов:
string name = null;
if (string.IsNullOrWhiteSpace(name))
{
Console.WriteLine("Name is null, empty, or whitespace");
}
Это особенно полезно, когда нужно обрабатывать null, empty строки и строки, состоящие только из whitespace, одинаковым образом. Например:
string name1 = null;
string name2 = "";
string name3 = " ";
// Все три выведут сообщение
if (string.IsNullOrWhiteSpace(name1)) Console.WriteLine("name1 is null/empty/whitespace");
if (string.IsNullOrWhiteSpace(name2)) Console.WriteLine("name2 is null/empty/whitespace");
if (string.IsNullOrWhiteSpace(name3)) Console.WriteLine("name3 is null/empty/whitespace");
Обратите внимание, что string.IsNullOrWhiteSpace() отличается от обычной проверки на null. Она также выявляет пустые строки и строки, содержащие только пробелы, табуляции или другие символы whitespace.
Задание
ЛегкоСоздай метод с именем processUserName, который принимает параметр типа userName. Метод должен:
- Если
userNameравен null, вернуть "No user provided" - Если
userNameпуст или содержит только пробельные символы, вернуть "Invalid username" - В противном случае вернуть "Welcome, [userName]!", где [userName] — фактическое имя пользователя
Не забудь использовать подходящие шаблоны проверки на null.
Попробуйте сами
using System;
class ProcessUserName
{
public static string processUserName(string userName)
{
// Напишите ваш код здесь
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Многомерные массивы
Основы 2D-массивовОбъявление и инициализация 2D-массивовДоступ к элементам 2D-массиваВложенные циклы с 2D-массивамиЗубчатые массивыОсновные операции с матрицамиПовторение — многомерные массивы4Методы управления потоком выполнения
Досрочный выходЗащитные условияОператоры перехода (goto)Break и ContinueУпрощение вложенных условных конструкций7Логические операторы: продвинутый уровень
Вычисление с коротким замыканиемУсловные логические операторыПриоритет операторовПовторение — продвинутые операторы2Продвинутое принятие решений
Множественные условияСложная логика BooleanСравнение If и SwitchВложенные конструкции SwitchПовторение — продвинутые решения5Обработка исключений
Основы Try-CatchТипы исключенийНесколько блоков CatchРабота с файламиБлок FinallyИспользование Using вместо Try-FinallyПользовательские исключенияПовторение — обработка ошибок3Улучшение циклов
Производительность цикловИтерация по сложным структурамКаждый тип циклаРефакторинг цикловПовторение — оптимизированные циклы6Обработка null
Основы ссылок на nullТипы значений, допускающие nullШаблоны проверки на nullЗащитное программированиеПовторение — безопасность при работе с nullПотренируйтесь самостоятельно: Онлайн-компилятор C#