c# - 将 null 传递给可接受的方法

标签 c# null

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/

相关文章:

c# - 将按钮命令绑定(bind)到不同的 ViewModel

c# - 长时间运行的进程暂停

java - HtmlUnit 空指针异常

c# - 使用 ip 和端口将 TCP 消息从 dot net 服务器发送到我的 iOS 设备

c# - 在 Windows Phone 8.1 上触摸时如何更改矩形颜色

c# - 中止包含永无止境的库方法的任务(无法检查取消请求)

c# - .Net如何允许将Nullables设置为Null

java - JAXB 包装的通用对象的 Setter 方法从未被调用

mysql - 如何使用 IF NULL,在 MySQL 中执行此操作?

java - 如何在 facelet 模板中将托管 bean 作为参数传递