我正在創建一個縱橫字謎遊戲,並且似乎在網格系統中有一個簡單的座標變量分配問題。 我有一個非常簡單的結構來保存離散座標值,如下所示。我已經剝離了封裝以便於閱讀。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#中互換。這似乎主要解決了我的問題。 –