Menu
Coddy logo textTech

Null Checking Patterns

Часть раздела Логика и управление потоком путешествия по C# на Coddy — урок 33 из 66.

Проверка на null является неотъемлемой частью написания надежного кода на C#. Существует несколько шаблонов, которые вы можете использовать для безопасной проверки значений на null.

Давайте рассмотрим некоторые распространённые шаблоны проверки на null:

Сначала базовая проверка на null:

string name = null;

if (name == null)
{
    Console.WriteLine("Name is null");
}

Еще один распространенный шаблон — оператор условного нулевого значения (?.), который безопасно обращается к членам потенциально null-объектов:

string name = null;
int? length = name?.Length;  // length будет null

Оператор нулевого слияния (??) предоставляет значение по умолчанию, когда выражение равно null:

string name = null;
string displayName = name ?? "Unknown";  // displayName will be "Unknown"

Вы также можете объединять эти паттерны в цепочку для более сложных сценариев:

string name = null;
int length = (name ?? "").Length;  // length will be 0

Метод string.IsNullOrWhiteSpace() проверяет, является ли строка null, пустой или содержит только пробельные символы. Это удобный способ проверить строковый ввод за один вызов:

string name = null;

if (string.IsNullOrWhiteSpace(name))
{
    Console.WriteLine("No name provided");  // this will print
}

string blank = "   ";

if (string.IsNullOrWhiteSpace(blank))
{
    Console.WriteLine("Blank name provided");  // this will also print
}

Используйте string.IsNullOrWhiteSpace(), когда хотите рассматривать null, пустые строки и строки, содержащие только пробелы, как эквивалентный недопустимый ввод.

challenge icon

Задание

Легко

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

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

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

Шпаргалка

Используйте == null для базовой проверки на null:

if (name == null)
{
    Console.WriteLine("Name is null");
}

Используйте оператор условной нулевости ?. для безопасного доступа к членам:

int? length = name?.Length;  // length will be null if name is null

Используйте оператор слияния с null ?? для предоставления значений по умолчанию:

string displayName = name ?? "Unknown";

Используйте string.IsNullOrWhiteSpace() для проверки строк, которые являются null, пустыми или содержат только пробелы:

if (string.IsNullOrWhiteSpace(name))
{
    Console.WriteLine("Name is null, empty, or whitespace");
}

Цепочка операторов для сложных сценариев:

int length = (name ?? "").Length;  // length will be 0 if name is null

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

using System;

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

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

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