C# 参数名后面的感叹号是什么
C# what is the exclamation point positioned after the parameter name
这是我的第一个问题。我在 C# 中遇到了这样的方法:
void Do(string action!) { ... }
并且不明白 action
之后的 !
是什么,它确实是什么。你能帮我理解一下吗?
这被命名为 bang 运算符,!
,它可以位于参数列表中的任何标识符之后,这将导致 C#
编译器为该参数发出标准的 null 检查代码。例如:
void Do(string action!) { ... }
将翻译成:
void Do(string action!) {
if (action is null) {
throw new ArgumentNullException(nameof(action));
}
...
}
顺便说一句,目前此功能尚不可用。您可以找到更多信息 here.
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/null-forgiving
您使用 null-forgiving 运算符来声明引用类型的表达式 x 不为 null
这是我的第一个问题。我在 C# 中遇到了这样的方法:
void Do(string action!) { ... }
并且不明白 action
之后的 !
是什么,它确实是什么。你能帮我理解一下吗?
这被命名为 bang 运算符,!
,它可以位于参数列表中的任何标识符之后,这将导致 C#
编译器为该参数发出标准的 null 检查代码。例如:
void Do(string action!) { ... }
将翻译成:
void Do(string action!) {
if (action is null) {
throw new ArgumentNullException(nameof(action));
}
...
}
顺便说一句,目前此功能尚不可用。您可以找到更多信息 here.
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/null-forgiving
您使用 null-forgiving 运算符来声明引用类型的表达式 x 不为 null