我可能会在这里要求不可能,但我想知道我是否可以以任何方式更新引用后面的变量。
代码示例(C#)不仅仅是一个奇怪的解释:
var actual = "world";
var reference = actual;
reference = "you";
Console.WriteLine("Hello {0}", actual);
输出"Hello world"
而非"Hello you"
。
答案 0 :(得分:1)
如果您使用引用类型但不能使用string
,则可以使用
string
是引用类型,但特别是它是不可变的 - >每当你"更新"它,将创建string
的新实例。
var actual = "world";
var reference = actual;
var isSame = ReferenceEquals(actual, reference);
Console.WriteLine(isSame); // True
reference = "you";
Console.WriteLine("updated...");
isSame = ReferenceEquals(actual, reference);
Console.WriteLine(isSame); // False
您可以创建和使用自己的类型
public class MyValue
{
public string Value { get; set; }
}
var actual = new MyValue { Value = "world" };
var reference = actual;
reference.Value = "you";
Console.WriteLine($"Hello {actual.Value}"); // Hello you