Menu
Coddy logo textTech

Шаблоны проверки на 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.

challenge icon

Задание

Легко

Создай метод с именем processUserName, который принимает параметр типа userName. Метод должен:

  1. Если userName равен null, вернуть "No user provided"
  2. Если userName пуст или содержит только пробельные символы, вернуть "Invalid username"
  3. В противном случае вернуть "Welcome, [userName]!", где [userName] — фактическое имя пользователя

Не забудь использовать подходящие шаблоны проверки на null.

Попробуйте сами

using System;

class ProcessUserName
{
    public static string processUserName(string userName)
    {
        // Напишите ваш код здесь
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Онлайн-компилятор C#