我正在创建一个纵横字谜游戏,并且似乎在网格系统中有一个简单的坐标变量分配问题。 我有一个非常简单的结构来保存离散坐标值,如下所示。我已经剥离了封装以便于阅读。C#为什么链接列表类变量在赋值后不保留其值?
public struct vec2
{
public int x, y;
public vec2(int x, int y)
{
this.x = x;
this.y = y;
}
}
这VEC 2结构保持一个类的内部持有字值
public struct WordClass
{
string svalue;
bool flag;
public vec2 position;
public WordClass(string sarg, bool barg)
{
this.svalue = sarg;
this.flag = barg;
position = new vec2(0,0);
}
public string StringVal
{
get { return svalue; }
}
public bool FlagVal
{
get { return flag; }
}
public void DisableWord()
{
if (this.flipflop == false)
{
this.flipflop = true;
}
}
public void SetPos(int xa, int ya)
{
this.position.x = xa;
this.position.y = ya;
}
}
这应该基本保持永久的单词列表与使用的标志,和可变位置系统会自动计算最佳这个词的位置。
我有话
List<WordClass> WordList = new List<WordClass>();
,并改变一个词的坐标在单词表的动态链表
//Arbitrary values
WordList[0].SetPos(Position_X, Position_Y);
现在我的问题是,当我尝试使用的位置这个词,不管我把它设置得太早,它的默认值都是0,0。在做其他功能时,我一直在挠头脑,并且留下了我想知道我是否缺少重要的东西。任何帮助将是伟大的,谢谢。
检出[“何时使用结构?”](http://stackoverflow.com/q/521298/382780)。你的结构是可变的,在你试图设置一个值的时候会导致这样的问题,但它不会“粘住”,因为你实际上正在改变结构副本上的值。我认为你不应该在这里使用结构。 – 31eee384
欢呼的链接,我仍然是一个业余程序员,我认为类和Structs完全可以在C#中互换。这似乎主要解决了我的问题。 –