當我的程序運行時,它會在一條消息中接收帶有Id和數據的消息。如何在程序運行時創建列表
我想爲每個ID創建一個新列表,以便可以存儲來自該Id的數據。 問題是,我不知道我的程序運行之前會收到多少個Id。我知道的唯一的事情就是它很多。所以我不知道這是可能的還是我該怎麼做。 這笏我基本上是試圖做的事:
if (!(idlist.Contains(id))){
idlist.Add(id);
List<string> id.ToString() = new List<string>();}
當我的程序運行時,它會在一條消息中接收帶有Id和數據的消息。如何在程序運行時創建列表
我想爲每個ID創建一個新列表,以便可以存儲來自該Id的數據。 問題是,我不知道我的程序運行之前會收到多少個Id。我知道的唯一的事情就是它很多。所以我不知道這是可能的還是我該怎麼做。 這笏我基本上是試圖做的事:
if (!(idlist.Contains(id))){
idlist.Add(id);
List<string> id.ToString() = new List<string>();}
你可以這樣做:
Dictionary<int, List<string>> dictionary = new Dictionary<int, List<string>>();
dictionary[newId] = new List<string>();
dictionary[newId].add("Hello!");
詞典是很方便!
你可以做這樣的事情還有:
if(!dictionary.ContainsKey(newId)){
//Add the new List<string> to the dictionary
}else{
//Add to the existing List<string> at dictionary[newId]
}
希望這有助於!
您可以使用Dictionary來存儲鍵值對列表。您的密鑰將是id,值將是字符串列表。
Dictionary<int,List<string>> ids = new Dictionary<int,List<string>>();
當你得到一個ID創建一個新的條目是這樣的:
ids[id] = new List<string>();
如果字典已經包含了這個ID就會被改寫一個條目。您可以檢查使用ContainsKey防止:
if(!ids.ContainsKey(id))
{
ids[id] = new List<string>();
}
使用字典:
var myDictionary = new Dictionary<int, List<string>>();
// .....
List<string> myList;
myDictionary.TryGetValue(id, out myList);
if (null == myList) {
myList = new List<string>();
myDictionary[id] = myList;
}
myList.Add("hello world");
我不相信你可以創建一個列表您正在嘗試的方式。你可能想嘗試是這樣的:
IDictionary<int, List<string>> idDictionary = new Dictionary<int, List<string>>()
//wait for messages
...
//handle new message
if (!idDictionary.containsKey(incommingId)){
idDictionary.add(incommingId, new List<String>())
}
idDictionary[incommingId].add(data);
使用字典來保存數據列出了所有收到的ID的應提供像樣的查找性能。但是,如果在程序運行時收到數百個不同的ID,這可能會改變。
爲什麼不在你的if語句中使用'TryGetValue()'返回的布爾值? – Lucero 2009-11-17 13:09:09
因爲「myDictonary」對於指定的鍵可以具有值「NULL」。我想在它裏面有非NULL列表。事實上,在這種情況下,返回值是無用的。 – TcKs 2009-11-17 13:43:03
btw。爲什麼downvote? – TcKs 2009-11-17 13:43:42