NotNullWhen
NotNullWhen(true) на out:
при возврате true значение
"abcde", при false -
null. Второй случай печатают
как res == null → True.
#nullable enable в начале.
Синтаксис
static bool TryRead([NotNullWhen(true)] out string? value)
Пример
Давайте получить текст при успехе:
#nullable enable
using System;
using System.Diagnostics.CodeAnalysis;
class Program
{
static bool TryRead(
bool ok,
[NotNullWhen(true)] out string? value)
{
if (ok)
{
value = "abcde";
return true;
}
value = null;
return false;
}
static void Main()
{
TryRead(true, out string? res);
Console.WriteLine(res);
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте обработать неуспешный вызов:
#nullable enable
using System;
using System.Diagnostics.CodeAnalysis;
class Program
{
static bool TryRead(
bool ok,
[NotNullWhen(true)] out string? value)
{
if (ok)
{
value = "abcde";
return true;
}
value = null;
return false;
}
static void Main()
{
TryRead(false, out string? res);
bool isNull = res == null;
Console.WriteLine(isNull);
}
}
Результат выполнения кода:
True
Пример
Давайте проверить код возврата при успехе:
#nullable enable
using System;
using System.Diagnostics.CodeAnalysis;
class Program
{
static bool TryRead(
bool ok,
[NotNullWhen(true)] out string? value)
{
if (ok)
{
value = "abcde";
return true;
}
value = null;
return false;
}
static void Main()
{
bool res = TryRead(true, out string? text);
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Смотрите также
-
MaybeNullWhen,
null при false -
NotNull,
всегда не null -
MaybeNull,
возврат может быть null -
NotNullIfNotNull,
зависимость от аргумента