如何更新引用后面的变量?

时间:2016-11-19 20:20:23

标签: c#

我可能会在这里要求不可能,但我想知道我是否可以以任何方式更新引用后面的变量。

代码示例(C#)不仅仅是一个奇怪的解释:

var actual = "world";
var reference = actual;

reference = "you";

Console.WriteLine("Hello {0}", actual);

输出"Hello world"而非"Hello you"

https://dotnetfiddle.net/3yERkY

1 个答案:

答案 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