假设我有一个Person班级并且具有以下内容:
Person A = new Person("Tom");
Person B = A;
Run Code Online (Sandbox Code Playgroud)
有没有一种方法,我可以改变它,这样,如果我分配一个新的Person来B,B = new Person("Harry"),A是指同一个实例吗?我知道你可以ref在函数中的参数赋值中做到这一点.
Eri*_*ert 36
您想要的功能称为"ref locals",C#不支持它.
CLR确实支持生成包含ref locals的代码,几年前我写了一个C#的实验版本,它具有你想要的功能,只是为了看看它是否可行.你可以这样做:
Person a = whatever;
ref Person b = ref a;
Run Code Online (Sandbox Code Playgroud)
然后如你所说,对"b"的更改将改变"a"的内容.这两个变量成为同一存储位置的别名.
虽然这是一个很好的小功能并且运行良好,但我们决定不把它用于C#.它可能仍然会出现在假设的未来版本的语言中,但我不会对它的期望感到兴奋; 它可能不会发生.
(请记住,Eric对所有Microsoft产品的假设未来版本的所有思考都只适用于娱乐目的.)