【问题标题】:How can a C# parameter with default value be null?具有默认值的 C# 参数如何为空?
【发布时间】:2013-03-30 01:22:08
【问题描述】:

下面显示的代码显示了一个方法Get,它获取字符串search,默认值:""

search 具有非空默认值并且从未更改时,该值怎么可能为空?

【问题讨论】:

  • 如果参数存在(但为空),则不会使用默认值。
  • 您如何调用 MainView 的 Get?
  • 由于这是 Web API,您可能需要检查原始请求以查看正在传递的值。

标签: c# .net c#-4.0 asp.net-mvc-4 .net-4.0


【解决方案1】:

当搜索具有非空默认值并且从不更改时,该值怎么可能为空?

如果您将null 显式传递给方法(或为空的变量),则不使用默认值。

默认值仅在您调用方法时使用没有适当的参数,在这种情况下,编译器会为您“填充”默认值。如果你用一些东西来调用这个方法,包括null或一个对象变量null,你会在那里得到一个空值。

【讨论】:

  • 可能值得一提的是,如果方法是 FooCorp.DLL 并且 BarCorp.DLL 是调用者,并且 FooCorp 更改了方法的默认值,来自 BarCorp.DLL 的调用将保持除非该程序集也被重新编译,否则使用旧值。
  • 非常正确 - 正如我所说,编译器在编译时“填充”默认值,这通常是默认参数的缺点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-16
  • 1970-01-01
  • 2016-10-30
  • 1970-01-01
  • 1970-01-01
  • 2015-02-04
  • 1970-01-01
相关资源
最近更新 更多