如何在C#中返回引用?

use*_*477 4 c# c#-4.0

我正在使用Vector3D结构.我遇到一种情况,如果我有一个属性,如:

Vector3D MyVec {get; set;}
Run Code Online (Sandbox Code Playgroud)

如果我调用MyVec.Normalize();MyVec值未被修改.我知道struct是值类型,getter将浅层复制一个新实例并返回它,因此该Normalize()方法将修改temp对象MyVec本身.

  1. 我该如何解决这种情况?Vector3D结构不是类,我不能修改它.
  2. 我可以在C#中返回引用吗?

谢谢.

Gui*_*ume 5

分配创建的结构

MyVec = MyVec.Normalize();
Run Code Online (Sandbox Code Playgroud)

正如devio所指出的,如果Normalize方法没有返回一个新结构(可变结构是邪恶的),这是你的解决方案:

var myVec = MyVec;
myVec.Normalize();
MyVec = myVec;
Run Code Online (Sandbox Code Playgroud)