在.NET中,String.Empty和之间的区别是什么"",它们是可互换的,还是存在一些基本的参考或本地化问题,这些问题String.Empty将确保不是问题?
在.Net中为什么String.Empty只读而不是常量?我只是想知道是否有人知道该决定背后的原因是什么.
我正在编写一种方法,它将DateTime值作为其中一个参数.我决定它是可选参数,所以我继续尝试DateTime.MinValue默认.
private void test(string something, DateTime testVar = DateTime.MinValue) {
}
Run Code Online (Sandbox Code Playgroud)
但是这会产生一个错误:
'testVar'的默认参数值必须是编译时常量.
使用此代码似乎工作得很好.
private void test(string something, DateTime testVar = new DateTime()) {
}
Run Code Online (Sandbox Code Playgroud)
我得到了建议,使用DateTime.MinValue而不是新的DateTime(),因为它是自我记录的.既然new DateTime()是基本相同的东西为什么DateTime.MinValue不能用?如果我把它留下来也会有任何潜在的问题new DateTime()吗?
如果String.Empty一样好"",那么编译器如何在语句中抛出string.Empty case呢?string.Empty在我看来,没有比这更稳定的了.谁知道?谢谢!
switch (filter)
{
case string.Empty: // Compiler error "A constant value is expected"
break;
case "": // It's Okay.
break;
}
Run Code Online (Sandbox Code Playgroud) 我有以下一小段代码让我感到有些困惑,因为我不熟悉C#.
我需要使用一个可选参数,如下所示:
private string GetSomething(object inputObject, string optionalString = "")
{
//...
}
Run Code Online (Sandbox Code Playgroud)
一切都很好.但是,如果我编辑上面的部分以遵循项目其余部分的编码标准,如下所示,我收到一个错误:
private string GetSomething(object inputObject, string optionalString = String.Empty)
{
//...
}
Run Code Online (Sandbox Code Playgroud)
随着错误阅读
'optionalString'的默认参数值必须是编译时常量.
虽然我理解为什么它需要是一个常量,但为什么后者版本不会像第一个版本那样简单地优化和编译?在某些情况下有区别吗?
如果重要,我使用的是Visual Studio 2013,该项目是.NET 4.5.