簡體   English   中英

有內置的 ExpectNonNull 嗎?

[英]Is there a built-in ExpectNonNull?

在我的代碼中,當某些東西被聲明為可空時,但我希望它在運行時是非空的,我可以這樣做:

someObject.ExpectNonNull().SomeMember

ExpectNonNull 是這樣實現的:

[return: NotNull]
public static T ExpectNonNull<T>(
    [NotNull] this T? arg,
    [CallerArgumentExpression(nameof(arg))] string arg_name = ""
)
    where T : class
{
    if (arg is null)
        throw new ArgumentNullException(
            arg_name,
            $"The argument `{arg_name}` with type {typeof(T).Name} is expected to be non-null, but is null."
        );
    return arg;
}

(還有一個值類型的版本。)

.NET 本身是否內置了類似的東西?

從 .NET 6 開始,您至少可以將ArgumentNullException.ThrowIfNull用於您所追求的某些方面:

public void SomeMethod(string text)
{
    ArgumentNullException.ThrowIfNull(text);
    // Use text here, confident that it's not null
}

它不允許您使用那種流暢的方法,但在某些情況下,這就是您所需要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM