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