ref为变量而不是函数中的参数

Ape*_*ure 17 c# ref

假设我有一个Person班级并且具有以下内容:

Person A = new Person("Tom");
Person B = A;
Run Code Online (Sandbox Code Playgroud)

有没有一种方法,我可以改变它,这样,如果我分配一个新的PersonB,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产品的假设未来版本的所有思考都只适用于娱乐目的.)

  • @configurator:如果您可以为变量创建别名并更改它所引用的变量,则某些算法会变得更容易编写.还有一些情况可以提高某些对性能敏感的代码的速度. (7认同)