Почему *DoesNotReturnAttribute* не работает должным образом?C#

Место общения программистов C#
Ответить
Anonymous
 Почему *DoesNotReturnAttribute* не работает должным образом?

Сообщение Anonymous »

У меня есть метод ThrowNull, покрытый атрибутом DoesNotReturn, который указывает, что этот метод никогда не вернет результат.

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

[DoesNotReturn]
public static void ThrowNull([InvokerParameterName] string argName, string? customErrorText = null, [CallerMemberName] string callerName = "") => throw new ArgumentException(AddMethodName(customErrorText != null ? customErrorText.InsertArgs(argName) : Strings.ArgumentMustNotBeNullArgumentTemplate.InsertArgs(callerName), callerName), customErrorText == null ? argName : null);
но, похоже, это не работает (как задумано)

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

public static T ThrowIfNullOrGet([MaybeNull, NotNullIfNotNull("source")] this T source, string argName, string? customErrorText = null, [CallerMemberName] string callerName = "") where T : class
{
if (source != null)
return source;

Requires.ThrowNull(argName, customErrorText, callerName);
return default; // still necessary to prevent compile error
}
Почему?
Разве DoesNotReturn не исключает необходимости помещать оператор возврата, поскольку это позволяет избежать только предупреждений?

Подробнее здесь: https://stackoverflow.com/questions/605 ... s-expected
Ответить

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

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

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

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

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