C#/ XNA扩展设置实例属性
作者:互联网
我正在扩展Vector2类.在我的主要代码中,我可以说
Vector2 v=new Vector2();
v.X=2;
但是在我的扩展中,我不能.
public static void SetToThree(this Vector2 vector)
{
vector.X=3;
}
v.SetToThree()不变.
当我逐行浏览代码时,在扩展矢量的X方向上更改为3,但是在扩展完成并继续执行主代码后,v完全没有变化.
扩展方法SetToThree是否可以更改v的值?
解决方法:
即使它看起来像实例方法,它也像静态方法一样操作-因此arg0(this)不是ref-它是按值传递的,因此您正在更改该结构的副本.由于不能在扩展方法的第一个参数上使用ref,因此必须返回它:
public static Vector2 SetToThree(this Vector2 vector)
{
vector.X=3;
return vector;
}
并使用:
v = v.SetToThree();
所以可能不值得…
标签:vector,xna,c 来源: https://codeday.me/bug/20191106/2000152.html