【发布时间】:2018-10-20 19:18:50
【问题描述】:
.NET 字符串始终是不可变的,但是如何创建一个等价的System.String 类来改变字符串值呢?
例如:当a被改变时,我希望b也被改变。
var a = "Hello";
var b = a;
a = "World";
var shouldBeTrue = String.ReferenceEquals(a, b)
&& String.Equals(b, "World");
【问题讨论】:
-
这不是改变字符串,而是有两个变量指向同一个字符串。您可以通过ref locals (
string a = "Hello"; ref string b = ref a;) 获得它。 -
@GSerg:如果 String 作为任何正常的引用类型,Wich 可以正常工作。而不是像 .NET Framework 中的引用类型那样的单个最少引用。
-
GSerg 是对的;您正在寻找的根本不是可变字符串。您正在寻找的是变量别名,即同一个变量有两个名称
a和b。 C# 7 支持这一点。 -
这是许多 C# 教程错误地解释不可变的含义的结果。