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Задание
ЛегкоСоздайте метод с именем ProcessName, который принимает строковый параметр с именем name. Метод должен:
- Проверить, является ли имя null
- Если имя равно null, вывести: "Name is null"
- Если имя не равно 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);
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Multi-dimensional Arrays
2D Arrays BasicsDeclaring and Initializing 2DAccessing 2D Array ElementsNested Loops with 2D ArraysJagged ArraysCommon Matrix OperationsRecap - Multi-dimensional4Flow Control Techniques
Early ReturnsGuard ClausesJump Statements (goto)Break and ContinueFlatten Nested Conditionals7Logical Operators Advanced
Short-Circuit EvaluationConditional Logical OperatorsOperator PrecedenceRecap - Advanced Operators2Advanced Decision Making
Multiple ConditionsComplex Boolean LogicIf vs. Switch ComparisonNested Switch StatementsRecap - Advanced Decisions5Exception Handling
Try-Catch BasicsException TypesMultiple Catch BlocksWorking with FilesFinally BlockUsing vs. Try-FinallyCustom ExceptionsRecap - Error Handling3Loop Enhancements
Loop PerformanceIterating ComplexEach Loop TypeRefactoring LoopsRecap - Optimized Loops6Null Handling
Null Reference BasicsNullable Value TypesNull Checking PatternsDefensive ProgrammingRecap - Null Safety