我在這一個上失去了我的頭。我有兩個列表。當我清除一個列表時,這兩個列表都已清除!我找不到這是怎麼發生的。C#List.Clear()清除所有列表
這裏是我的代碼:
Console.WriteLine("A: {0} \t As: {1}", Globals.Artists.Count(), Globals.ArtistsSelected.Count);
Globals.ArtistsSelected.Clear();
Console.WriteLine("A: {0} \t As: {1}", Globals.Artists.Count(), Globals.ArtistsSelected.Count);
從上面的代碼的結果是:
A: 121 As: 121
A: 0 As: 0
正如你可以清楚,藝術家和ArtistsSelected看到之前都有121項。當我清除一個,另一個也清除。
以下是名單是如何宣稱:
public static List<string> Artists = new List<string>();
public static List<string> ArtistsSelected = new List<string>();
我只有一個加載藝術家一個地方,它不會在該點之後再次打電話,和所有沒有一個地方是這樣的: Artists = ArtistsSelected;
或者這個:Artists.Clear()
。
任何幫助將不勝感激!哦,我也試過重新命名ArtistsSelected
喜歡的東西SelectedArtists
和它仍然沒有相it.`
* UPDATE *
因爲你們當中有些人都在問,這裏是藝術家是如何通過調用加載:
public static void populateArtistList()
{
Globals.Artists = SQL_Read.getArtistList();
Globals.SelectedArtists = Globals.Artists;
}
那麼這裏的SQL語句組成部分:
public static List<string> getArtistList()
{
List<string> artists = new List<string>();
SqlConnection con = new SqlConnection();
SqlCommand cmd = new SqlCommand();
string query = "SELECT Name FROM Artists ";
con.ConnectionString = SQL_getConnectionString.conStr();
con.Open();
cmd.Connection = con;
cmd.CommandText = query;
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
artists.Add(reader.GetString(0));
}
con.Close();
return artists;
}
爲什麼你使用'Count'爲'ArtistsSelected'和'伯爵()''爲Artists'? – Abion47
@ Abion47 - 好。這是從其他代碼遺留下來的。我只用Count來移除Count()。同樣的問題 –
在這種情況下可以看到更多的Globals課程。在您的代碼中的某個時刻,Artists和ArtistsSelected必須設置爲相同的引用。 – FishBasketGordo