Menu
Coddy logo textTech

Null Reference Basics

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

В C# null-ссылка представляет отсутствие объекта. Понимание того, как работать с null-значениями, необходимо для написания надежного кода.

Объявите переменную ссылочного типа (например, string) без присвоения значения:

string name = null;

Переменная 'name' теперь содержит ссылку null, что означает, что она не указывает ни на какой объект в памяти.

Попытка использовать ссылку null без проверки может вызвать ошибки во время выполнения:

string name = null;
// This will throw a NullReferenceException
int length = name.Length;

Вы можете проверить, не равна ли ссылка null, перед её использованием:

string name = null;
if (name != null)
{
    // Safe to use name here
    int length = name.Length;
}

Вы также можете присвоить переменной значение, не равное null:

string name = null;
name = "John";
// Now it's safe to use name
int length = name.Length; // length will be 4
challenge icon

Задание

Легко

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

  1. Проверить, является ли имя null
  2. Если имя равно null, вывести: "Name is null"
  3. Если имя не равно null, вывести: "Name length is X" (где X — длина имени)

Шпаргалка

Нулевая ссылка представляет отсутствие объекта в C#.

Объявите переменную ссылочного типа со значением null:

string name = null;

Использование нулевых ссылок без проверки вызывает ошибки времени выполнения:

string name = null;
// Это вызовет исключение NullReferenceException
int length = name.Length;

Проверяйте на null перед использованием:

string name = null;
if (name != null)
{
    // Здесь безопасно использовать name
    int length = name.Length;
}

Присвойте значение, отличное от null, чтобы сделать использование безопасным:

string name = null;
name = "John";
int length = name.Length; // length будет равно 4

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

using System;

class Program
{
    public static void ProcessName(string name)
    {
        // Напишите свой код здесь
    }
    
    static void Main(string[] args)
    {
        string input = Console.ReadLine();
        
        // Преобразование строки "null" в реальный null
        string name = input.ToLower() == "null" ? null : input;
        
        ProcessName(name);
    }
}
quiz iconПроверьте себя

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

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