【问题标题】:Difference between String.Empty and "" in optional parameter [duplicate]可选参数中String.Empty和“”之间的区别[重复]
【发布时间】:2015-04-07 20:41:08
【问题描述】:

下面的一小段代码让我有些困惑,因为我对 C# 不是很熟悉。

我需要使用如下所示的可选参数:

private string GetSomething(object inputObject, string optionalString = "")
{
    //...
}

一切都很好。但是,如果我按照项目其余部分的编码标准来编辑上面的部分,如下所示,我得到一个错误:

private string GetSomething(object inputObject, string optionalString = String.Empty)
{
    //...
}

读取错误

'optionalString' 的默认参数值必须是编译时常量。

虽然我理解为什么它需要是一个常量,但为什么后一个版本不像第一个版本那样简单地优化和编译?在某些情况下有区别吗?
如果重要的话,我使用的是 Visual Studio 2013,该项目是 .NET 4.5。

【问题讨论】:

    标签: c#


    【解决方案1】:

    对于complicated reasonsString.Empty 不是编译时常量;相反,它是一个只读字段。

    JITter 会优化掉对它的所有引用,但 C# 语言不会将其视为常量。

    【讨论】:

      猜你喜欢
      • 2011-05-11
      • 2011-09-07
      • 2011-03-11
      • 1970-01-01
      • 2012-09-24
      • 1970-01-01
      • 1970-01-01
      • 2011-10-08
      相关资源
      最近更新 更多