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