Null 对我来说是一种奇怪的数据类型,它似乎是错误的,也许它是我作为初学者经常遇到的空指针错误,现在让我将 null 的任何实例与某种邪恶联系起来!
无论如何我的问题是
在某些情况下可以使用 null 作为参数吗?例如,一个方法可能需要 a 和 b 来完成一项任务,但在某些情况下它可能只需要 a。在那些奇怪的实例中为 b 解析 null 是否正常并检查 if(b==null) 然后我们知道调用它的是什么?
或者我在这里的标记方式?
我必须承认,让我怀疑这是否可以接受的是,所讨论的方法可能会被覆盖,但整个方法可能会有 5 或 6 行的差异。这让我担心代码重复。
最佳答案
将null
传递给方法绝对没问题。但是,如果您有一个可能不需要传递变量的 csae,请考虑 overloading .
您可能传递 null 的原因是因为您可能有一个带有相当多参数的方法并且您不想实现所有可能的重载。
我个人不会使用可选参数 - 由于作为契约(Contract)的方法的问题,有很多关于这个主题的讨论超出了这个问题的范围。
更新
正确的做法是不要重复代码,而是让重载相互调用:
public void Foo(A a)
{
Foo(a, null);
}
public void Foo(A a, B b)
{
// .......
}
这将告诉客户这段代码:
- 只能用A调用方法
- 你可以用A和B调用方法
如果我只有第二种方法,客户端将不知道是否可以传递null
。
关于c# - 将 null 传递给可接受的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5498179/