我有一些代码,其中一些字符串以以下方式初始化:
public static string _syncGetLanguagePackage = new string("_syncGetLanguagePackage".ToCharArray());
我想知道这有什么意义。为什么不直接:
public static string _syncGetLanguagePackage = "_syncGetLanguagePackage";
有谁有主意吗?
他们想复制字符串,有一个不同的引用。
有一个更好的方法:
public static string _syncGetLanguagePackage = string.Copy("_syncGetLanguagePackage");
string.Copy
实际上:
创建与指定String具有相同值的String的新实例。
第一个代码段将强制创建一个新字符串,而第二个代码段将初始化另一个变量,使其指向相同的字符串字面值。
由于c#中的字符串是不可变的,因此在大多数情况下创建一个新实例没有多大意义。然而,在一些特殊的用例中,您可能需要一个不同的实例——例如,如果您想将其用作同步机制。