Start Debugging
2023-03-11 Обновлено 2023-11-05 csharp Edit on GitHub

C# выбросить исключение при null: ArgumentNullException.ThrowIfNull (.NET 6+)

Используйте ArgumentNullException.ThrowIfNull в .NET 6+ для лаконичных проверок на null или throw-выражения в C# 7+ для более ранних фреймворков.

.NET 6 ввёл несколько новых вспомогательных методов для выброса исключений, и один из них - ThrowIfNull. Использование простое:

ArgumentNullException.ThrowIfNull(myParam);

Метод выбросит ArgumentNullException, если myParam равен null. Иначе он ничего не сделает.

ThrowIfNull может принимать два параметра:

Примечание: paramName использует CallerArgumentExpressionAttribute, чтобы автоматически получить имя вашего параметра, поэтому в большинстве сценариев его указывать не придётся - фреймворк сам корректно определит имя аргумента.

throw-выражения

Если вы ещё не на .NET 6 или новее, но можете использовать C# 7+, то для повышения читаемости кода подойдут throw-выражения:

var myVar = myParam ?? throw new ArgumentNullException(nameof(myParam), "Parameter is required.");

Либо можно определить собственную реализацию ThrowIfNull, например так:

/// <summary>Throws an <see cref="ArgumentNullException"/> if <paramref name="argument"/> is null.</summary>
/// <param name="argument">The reference type argument to validate as non-null.</param>
/// <param name="paramName">The name of the parameter with which <paramref name="argument"/> corresponds.</param>
public static void ThrowIfNull([NotNull] object? argument, [CallerArgumentExpression("argument")] string? paramName = null)
{
    if (argument is null)
    {
        throw new ArgumentNullException(paramName);
    }
}

Comments

Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.

< Назад