我正在使用Vector3D结构.我遇到一种情况,如果我有一个属性,如:
Vector3D MyVec {get; set;}
Run Code Online (Sandbox Code Playgroud)
如果我调用MyVec.Normalize();该MyVec值未被修改.我知道struct是值类型,getter将浅层复制一个新实例并返回它,因此该Normalize()方法将修改temp对象MyVec本身.
Vector3D结构不是类,我不能修改它.谢谢.
分配创建的结构
MyVec = MyVec.Normalize();
Run Code Online (Sandbox Code Playgroud)
正如devio所指出的,如果Normalize方法没有返回一个新结构(可变结构是邪恶的),这是你的解决方案:
var myVec = MyVec;
myVec.Normalize();
MyVec = myVec;
Run Code Online (Sandbox Code Playgroud)