Bil*_*eal 11 c# arguments argumentnullexception nullreferenceexception
好吧,几个月前我问了一个关于C和C++的类似问题,但由于整个"Windows Phone"的缘故,我最近一直在关注C#.
那么,在C#中,是否应该在方法边界检查NULL?我认为这与C和C++不同,因为在C#中,通常可以确定给定的引用是否有效 - 编译器将阻止在任何地方传递未初始化的引用,因此唯一剩下的可能错误是它为null .此外,在.NET Framework中为这些事物定义了一个特定的异常,即ArgumentNullException,它似乎编写了程序员认为在传递无效null时应该获得的异常.
我的个人意见再次表明,打电话的人打破了这个问题,而且打电话的人应该把NRE扔到他们面前,直到几天结束.但是,我对这方面的不太确定,而不是我在本地代码领域 - 在这方面,与C或C++相比,C#的编程风格完全不同.
那么......你应该在C#方法中检查空参数吗?
是的,检查一下.最好使用代码约定来告诉调用者您需要非空参数
void Foo(Bar bar) {
Contract.Requires(bar != null);
}
Run Code Online (Sandbox Code Playgroud)
这是特别有利的,因为客户端可以准确地看到参数需要什么.
如果您不能使用代码合同,请使用保护条款
void Foo(Bar bar) {
Guard.Against<ArgumentNullException>(bar == null);
}
Run Code Online (Sandbox Code Playgroud)
失败快.
归档时间: |
|
查看次数: |
2443 次 |
最近记录: |