编程语言
首页 > 编程语言> > C#/ XNA扩展设置实例属性

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