我想保存對數組中字符串的引用。例如:C#保存對字符串變量的引用
string x = "x", y="y", z="z";
string array[];
我想這個數組將保存對x,y,z的引用。因此,在情況下,我將改變陣列[0]設置爲「XX」,則X將包括「XX」
由於 莫蒂
我想保存對數組中字符串的引用。例如:C#保存對字符串變量的引用
string x = "x", y="y", z="z";
string array[];
我想這個數組將保存對x,y,z的引用。因此,在情況下,我將改變陣列[0]設置爲「XX」,則X將包括「XX」
由於 莫蒂
它不能這樣做。 C#中的字符串是不可變的,這意味着你不能改變它們,你只能改變字符串引用。而且你不能創建一個字符串引用數組(除非你訴諸不安全的代碼 - 不要去那裏)。
您需要使用其他一些結構來保存您的數據。 A Dictionary<string, string>
是有人建議的可能性。或者,您始終可以通過陣列訪問字符串。
有兩種類型在C#的類型系統「值類型「和」參考類型「。
值類型按值複製。當你複製一個,你會得到一個全新的對象。
引用類型通過引用複製。當你複製一個,你實際上是複製一個引用到一些存儲位置。
字符串是一種值類型,但您試圖使其行爲像一個引用類型。
您可以創建一個類的字符串屬性,然後使用這個類的一個數組:
public class StringWrapper
{
public String Value {get; set;}
}
然後你可以使用它像這樣:
public class SomeOtherClass
{
public void SomeMethod()
{
StringWrapper[] array = new StringWrapper[3];
var x = new StringWrapper() { Value="X"; }
var y = new StringWrapper() { Value="y"; }
var z = new StringWrapper() { Value="z"; }
array[0] = x;
array[1] = y;
array[2] = z;
array[0].Value = "xx";
}
}
如果更改x.Value ,那麼array [0] .Value也會改變。
C#中的字符串變量是不可變的。 但是一個StringBuilder變量是可變的。
StringBuilder sb_x = new StringBuilder("x");
StringBuilder sb_y = new StringBuilder("y");
StringBuilder sb_z = new StringBuilder("z");
StringBuilder[] array = { sb_x, sb_y, sb_z };
array[0].Append("x");
現在array [0] =「xx」,sb_x也是「xx」!
通過閱讀評論我達到目標:)
backuping敵人最後一個已知的位置...其實我做它在這條路上。 如果你有一個更好的解決方案,展示它^ _^
if (EnemyLKP != EnemyLKPBackup[2])
{
EnemyLKPBackup[1] = EnemyLKPBackup[2];
EnemyLKPBackup[0] = EnemyLKPBackup[1];
EnemyLKPBackup[2] = EnemyLKP;
}
注:這是不可能的「參考」一變量(除了'在參數REF/out',但那是不同的),在C#;這與PHP說的不同(有許多方法可以完成這個任務,但並不完全如我們所設想的那樣)。 – 2012-12-24 07:31:54