[英]Cannot copy Dictionary 'Value' to a List - C#
遵循教程我有一個哈希表,其中包含一個與連接用戶的字符串匹配的TcpClient對象。 在閱讀了哈希表的原理和缺點之后,建議使用詞典是首選,因為它是通用的,因此更靈活。
從這里開始,數組包含哈希表中的值,在本例中是用戶的TcpClient。 通過循環TcpClients數組,我可以獲取每個用戶的流並將消息寫入其屏幕。
現在,如果我嘗試轉換為每個用戶保存TcpClient對象的數組,我會收到以下錯誤:
'System.Collections.Generic.Dictionary.ValueCollection.CopyTo(System.Net.Sockets.TcpClient [],int)'的最佳重載方法匹配有一些無效的參數
參數1:無法從'System.Collections.Generic.List'轉換為'System.Net.Sockets.TcpClient []'
這是Dictionary對象:
public static Dictionary<string, TcpClient> htUsers = new Dictionary<string, TcpClient>();
這是我創建的列表:
List<TcpClient> tcpClients = new List<TcpClient>();
這是我試圖將值復制到列表的方法:
htUsers.Values.CopyTo(tcpClients,0);
這是不可能完成的事情還是我需要進行簡單的改變?
謝謝你的時間。
解決這個問題最簡單的方法就是:
List<TcpClient> tcpClients = new List<TcpClient>(htUsers.Values);
要么:
List<TcpClient> tcpClients = new List<TcpClient>();
// Do things with list...
tcpClients.AddRange(htUsers.Values);
CopyTo方法復制到數組中,而不是復制到列表中。
CopyTo
僅將數組復制到數組中; 在您的情況下,您正在嘗試將數組復制到列表中。 試試這個:
List<TcpClient> tcpClients = htUsers.Values.ToList();
請注意,對於很多情況(例如枚舉),您可以直接在字典上工作:
foreach (var kvp in htUsers) {
string user = kvp.Key;
TcpClient client = kvp.Value;
// do something
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.