Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю - Страница 99
- Предыдущая
- 99/642
- Следующая
Для указания способности иметь значение
null
null
?
System.Nullable<T>
Т
Включение ссылочных типов, допускающих null
Поддержка для ссылочных типов, допускающих
null
null
• Контекст с заметками о допустимости значения
null:
null(?)
null
• Контекст с предупреждениями о допустимости значения
null:
null
Чтобы увидеть их в действии, создайте новый проект консольного приложения по имени
FunWithNullableReferenceTypes
null
<Nullable>

<Project Sdk="Microsoft .NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
<b><Nullable>enable</Nullable></b>
</PropertyGroup>
</Project>
Элемент
<Nullable>
#nullable

Ссылочные типы, допускающие null, в действии
Во многом из-за важности изменения ошибки с типами, допускающими значение
null
Program.cs
public class TestClass
{
public string Name { get; set; }
public int Age { get; set; }
}
Как видите, это просто нормальный класс. Возможность принятия значения
null
string? nullableString = null;
TestClass? myNullableClass = null;
Настройка в файле проекта помещает весь проект в контекст допустимости значения
null
string
TestClass
null
?
null
null
null
// Предупреждение CS8600 Converting null literal or possible null
// value to non-nullable type
// Преобразование литерала null или возможного значения null
// в тип, не допускающий null
TestClass myNonNullableClass = myNullableClass;
Для более точного управления тем, где в проекте находятся контексты допустимости значения
null
#nullable
null
#nullable disable
TestClass anotherNullableClass = null;
// Предупреждение CS8632 The annotation for nullable reference types
// should only be used in code within a '#nullable' annotations
// Заметка для ссылочных типов, допускающих значение null,
// должна использоваться только в коде внутри
// #nullable enable annotations
TestClass? badDefinition = null;
// Предупреждение CS8632 The annotation for nullable reference types
// should only be used in code within a '#nullable' annotations
// Заметка для ссылочных типов, допускающих значение null,
// должна использоваться только в коде внутри
#nullable enable annotations
string? anotherNullableString = null;
#nullable restore
В заключение важно отметить, что ссылочные типы, допускающие значение
null
HasValue
Value
System.Nullable<T>
- Предыдущая
- 99/642
- Следующая