Nullable Value Types
Часть раздела Логика и управление потоком путешествия по C# на Coddy — урок 32 из 66.
В C# типы значений, такие как int, float и bool, обычно не могут содержать значение null. Nullable типы значений позволяют этим типам представлять либо значение, либо null.
Объявление обычного int:
int regularNumber = 10;Объявите nullable int с использованием синтаксиса ? :
int? nullableNumber = 20;Присвойте null типу, допускающему значение null:
nullableNumber = null;После выполнения приведенного выше кода nullableNumber не содержит значения (null).
Проверить, есть ли значение у nullable-типа:
if (nullableNumber.HasValue)
{
Console.WriteLine("Value is: " + nullableNumber.Value);
}
else
{
Console.WriteLine("No value");
}Вы также можете использовать оператор нулевого слияния для предоставления значения по умолчанию:
int definiteNumber = nullableNumber ?? 0;Задание
ЛегкоСоздайте метод с именем ProcessNullableAge, который:
- Принимает параметр nullable int с именем
age - Проверяет, имеет ли возраст значение
- Если значение есть, выводит "Age is: X years" (где X — это значение)
- Если значения нет, выводит "Age not provided"
- Возвращает значение возраста, если оно присутствует, иначе возвращает 0
Попробуйте сами
using System;
class Program
{
// Реализуйте метод ProcessNullableAge здесь
static void Main(string[] args)
{
string input = Console.ReadLine();
int? age = null;
if (input != "null")
{
age = int.Parse(input);
}
int result = ProcessNullableAge(age);
Console.WriteLine("Returned value: " + result);
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
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