Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Троелсен Эндрю, "Язык программирования C#9 и платформа .NET5" бесплатно, без регистрации.
Рекомендации по переносу кода
Если при переносе кода из C# 7 в C# 8 или C# 9 вы хотите задействовать ссылочные типы, допускающие значение
null
null
Работа с типами, допускающими значение null
Для работы с типами, допускающими значение
null
null
null
null
FunWithNullableValueTypes
Операция объединения с null
Следующий важный аспект связан с тем, что любая переменная, которая может иметь значение null (т.е. переменная ссылочного типа или переменная типа, допускающего
null
??
null
??
null
null
GetlntFromDatabase()
null
null
null
100
NullableValueTypes
// Для краткости код не показан
Console.WriteLine("***** Fun with Nullable Data *****n");
DatabaseReader dr = new DatabaseReader();
// Если значение, возвращаемое из GetlntFromDatabase(), равно
// null, тогда присвоить локальной переменной значение 100.
int myData = dr.GetIntFromDatabase() ?? 100;
Console.WriteLine("Value of myData: {0}", myData);
Console.ReadLine();
Преимущество применения операции
??
if/else
null
// Более длинный код, в котором не используется синтаксис ??.
int? moreData = dr.GetIntFromDatabase();
if (!moreData.HasValue)
{
moreData = 100;
}
Console.WriteLine("Value of moreData: {0}", moreData);
// Вывод значения moreData
Операция присваивания с объединением с null (нововведение в версии 8.0)
В версии C# 8 появилась операция присваивания с объединением с
null
??=
null
null
// Операция присваивания с объединением с null
int? nullableInt = null;
nullableInt ??= 12;
nullableInt ??= 14;
Console.WriteLine(nullableInt);
Сначала переменная
nullableInt
null
nullableInt
null
nullableInt
null
null-условная операция
При разработке программного обеспечения обычно производится проверка на предмет
null
null
static void TesterMethod(string[] args)
{
// Перед доступом к данным массива мы должны проверить его
// на равенство null!
if (args != null)
{
Console.WriteLine($"You sent me {args.Length} arguments.");
// Вывод количества аргументов
}
}
Чтобы устранить обращение к свойству
Length
string
null
TesterMethod()