嗯,几个月前我问过a similar question about C and C++ ,但由于整个“Windows Phone”问题,我最近更加关注 C#。
那么,在 C# 中,是否应该在方法边界检查 NULL?我认为这与 C 和 C++ 不同,因为在 C# 中,通常可以确定给定引用是否有效——编译器会阻止将未初始化的引用传递到任何地方,因此唯一可能的错误是它为 null .此外,在 .NET Framework 中为这些东西定义了一个特定的异常,即 ArgumentNullException。 ,这似乎将程序员认为在传递无效 null 时应该得到的东西编成法典。
我个人的意见再次表明,这样做的调用者是错误的,并且说调用者应该向他们抛出 NRE,直到日子结束。但是,与我在 native 代码领域相比,我对此不太确定——在这方面,与 C 或 C++ 相比,C# 在某些地方具有完全不同的编程风格。
那么...您应该检查 C# 方法中的空参数吗?
最佳答案
是的,检查一下。最好使用 Code Contracts 告诉调用者你需要非空参数
void Foo(Bar bar) {
Contract.Requires(bar != null);
}
这是特别有利的,因为客户可以准确地看到需要什么参数。
如果您不能使用代码契约,请使用保护条款
void Foo(Bar bar) {
Guard.Against<ArgumentNullException>(bar == null);
}
快速失败。
关于c# - 在 C# 中,是否应该检查传递给方法的引用是否为 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5919042/