在将.net框架应用程序移植到.net核心应用程序时,String.Copy
有一些用于复制字符串的用法。但它看起来这个方法已从.net core中删除,那么你将如何在.net核心应用程序中复制一个字符串,因此它也不存在于uwp中。 .net核心中的赋值string b = a;
是否意味着与.netframework中的不同?
此代码中使用了副本:
public DataDictionary(DataDictionary src)
:this()
{
this.Messages = src.Messages;
this.FieldsByName = src.FieldsByName;
this.FieldsByTag = src.FieldsByTag;
if (null != src.MajorVersion)
this.MajorVersion = string.Copy(src.MajorVersion);
if (null != src.MinorVersion)
this.MinorVersion = string.Copy(src.MinorVersion);
if (null != src.Version)
this.Version = string.Copy(src.Version);
}
答案 0 :(得分:6)
这不如string.Copy()
那么优雅,但如果您因任何原因不想要引用相等,请考虑使用:
string copiedString = new string(stringToCopy.ToCharArray());
答案 1 :(得分:5)
分配字符串不是创建副本。 a = b
只是将两个变量的引用设置为相同的内存段。 string.Copy
实际上复制了字符串,因此引用不再相同。
我怀疑你是否需要string.Copy
。你为什么想要另一个参考?我无法想到你想要的任何常见情况(unless you are using unmanaged code)。由于字符串是不可变的,因此您只能更改字符串的内容,因此在这种情况下复制是无用的。
根据使用string.Copy
的代码进行更新,我认为使用string.Copy
无效。如果仅在托管代码中使用DataDictionary
,则可以执行简单分配。
答案 2 :(得分:0)
string newstring = $“ {oldstring}”;