C# 将字符串初始化为"&引用;或&引用;。ToString()-我应该使用哪一个?

C# 将字符串初始化为"&引用;或&引用;。ToString()-我应该使用哪一个?,c#,C#,我应该如何在C#中初始化空字符串?为什么?哪一个更快 string myString = ""; 或 第二个是多余的。它已经是一个字符串。所以第一个是最好的选择。只返回字符串本身: public override String ToString() { Contract.Ensures(Contract.Result<String>() != null); Contract.EndContractBlock(); return

我应该如何在C#中初始化空字符串?为什么?哪一个更快

string myString = "";


第二个是多余的。它已经是一个
字符串
。所以第一个是最好的选择。

只返回字符串本身:

    public override String ToString() {
        Contract.Ensures(Contract.Result<String>() != null);
        Contract.EndContractBlock();
        return this;
    }
public重写字符串ToString(){
Contract.sure(Contract.Result()!=null);
Contract.EndContractBlock();
归还这个;
}
这意味着
string myString=“”。ToString()
毫无意义。毕竟,它已经是一根弦了


事实上,假设字符串是不可变的,并且在本例中是interned,
是由
字符串返回的同一个字符串实例。空的

请使用第一个,这是最好的选择

string myString = "";
也可以在C中使用string.Empty#

第二个是无意义的,因为“”已经是字符串并且正在转换字符串(“”)。ToString()是无意义的。

您也可以使用
string.Empty
更具可读性。这与性能无关。

第二个问题毫无意义。非常感谢你的回答,我在别人编写的一些代码中看到了第二个选项,我想知道应该使用哪一个。没问题。正如另一个答案所说,string.Empty是另一个选项。它们的性能几乎相同,但从代码可读性的角度来看,有些人更喜欢string.Empty。为什么第一个是最好的选择?请解释:)一件事是:不能将第二个参数用作可选方法参数。编译器会说它不是编译时常量,使用first-不存在这样的错误。在.net 2.0之前有一点不同,“”创建了一个string.Empty没有创建的新对象。这不再是事实,你使用哪一种取决于个人偏好。我个人看到“”使用的远远不止字符串。空,除了在非常旧的代码中。在某些情况下,“”可以工作,但string.Empty会导致编译错误。请参阅:(请参阅上面的两个答案)。它还意味着“.ToString()可能稍慢一些,但要验证它,需要对其进行测试。编译器可能会对其进行优化。@Tim这意味着,到处盲目复制的代码库不好,并且使用
ToString()
来避免casts@TimJIT在发行版中优化了
“”.ToString()
。在所有其他情况下,它都没有得到优化。因此,人们盲目地在字段值列上使用
ToString()
,只是为了将结果解析回日期或双精度。
string myString = "";
string myString = string.Empty;