Как я могу использовать NotNullWhen с новым синтаксисом расширения?C#

Место общения программистов C#
Ответить
Anonymous
 Как я могу использовать NotNullWhen с новым синтаксисом расширения?

Сообщение Anonymous »

У меня есть метод расширения IsNullOrWhiteSpace, определенный как:

Код: Выделить всё

public static class StringExtensions
{
public static bool IsNullOrWhiteSpace([NotNullWhen(false)] this string? s) =>
string.IsNullOrWhiteSpace(s);
}
Я хочу переписать это, используя новый синтаксис расширений. Проблема в том, что я хочу сообщить компилятору, что если s не равно нулю, этот метод возвращает false. Я не понимаю, как это сделать.
Райдер предлагает изменить его на

Код: Выделить всё

public static class StringExtensions
{
extension([NotNullWhen(false)] string? s)
{
public bool IsNullOrWhiteSpace() => string.IsNullOrWhiteSpace(s);
}
}
что, очевидно, не будет работать.
Я думал об использовании атрибута MemberNotNullWhen вот так

Код: Выделить всё

public static class StringExtensions
{
extension(string? s)
{
[MemberNotNullWhen(false, nameof(s))]
public bool IsNullOrWhiteSpace() => string.IsNullOrWhiteSpace(s);
}
}
но это не работает, потому что s не является членом.
Есть ли способ сделать это?

Подробнее здесь: https://stackoverflow.com/questions/798 ... ion-syntax
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»