Например, с помощью свойства HasValue
!= можно программно выяснять, действительно ли переменной, допускающей null, было присвоено значение null. Значение, которое присвоено типу, допускающему null, можно получать напрямую или через свойство Value. Учитывая, что суффикс ? является просто сокращением для использования Nullable, предыдущий метод LocalNullableVariables можно было бы реализовать следующим образом:static void LocalNullableVariablesUsingNullable
{
// Определить несколько типов, допускающих null,
// с применением Nullable
Nullable
Nullable
Nullable
Nullable
Nullable
}
Как отмечалось ранее, типы данных, допускающие null
null. Обратите внимание, что метод GetlntFromDatabase не присваивает значение члену целочисленного типа, допускающего null, тогда как метод GetBoolFromDatabase присваивает допустимое значение члену типа bool?class DatabaseReader
{
// Поле данных типа, допускающего null.
public int? numericValue = null;
public bool? boolValue = true;
// Обратите внимание на возвращаемый тип, допускающий null.
public int? GetIntFromDatabase
{ return numericValue; }
// Обратите внимание на возвращаемый тип, допускающий null.
public bool? GetBoolFromDatabase
{ return boolValue; }
}
В следующем коде происходит обращение к каждому члену класса DatabaseReader
HasValue и Value, а также операции равенства C# (точнее операции "не равно"):Console.WriteLine("***** Fun with Nullable Value Types *****\n");
DatabaseReader dr = new DatabaseReader;
/// Получить значение int из "базы данных".
int? i = dr.GetIntFromDatabase;
if (i.HasValue)
{
Console.WriteLine("Value of 'i' is: {0}", i.Value);
// Вывод значения переменной i
}
else
{
Console.WriteLine("Value of 'i' is undefined.");
// Значение переменной i не определено
}
// Получить значение bool из "базы данных".
bool? b = dr.GetBoolFromDatabase;
if (b != null)
{
Console.WriteLine("Value of 'b' is: {0}", b.Value);
// Вывод значения переменной b
}
else
{
Console.WriteLine("Value of 'b' is undefined.");
// Значение переменной b не определено
}
Console.ReadLine;
Использование ссылочных типов, допускающих null (нововведение в версии 8.0)
Важным средством, добавленным в версию C# 8, является поддержка ссылочных типов, допускающих значение null
null. В новом проекте .NET Core 3.0/3.1 или .NET 5 ссылочные типы функционируют точно так же, как в C# 7. Это сделано для того, чтобы предотвратить нарушение работы миллиардов строк кода, существовавших в экосистеме до появления C# 8. Разработчики в своих приложениях должны дать согласие на включение ссылочных типов, допускающих null.Бьёрн Страуструп , Ирина Сергеевна Козлова , Бьерн Страуструп , Валерий Федорович Альмухаметов
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT