在使用C# 8.0的可空引用类型特性编写程序中,对于函数参数还需要执行空值检查吗?
void Foo(string s, object o)
{
if (s == null) throw new ArgumentNullException(nameof(s)); // Do I need these?
if (o == null) throw new ArgumentNullException(nameof(o));
...
}
代码中没有任何一部分是公共API的一部分,因此我怀疑这些检查可能是多余的。两个参数没有标记为可为空,因此如果调用代码可能传入null,则编译器应该发出警告。