2010-10-17 59 views
1

我有一個客戶端和一個服務器程序,而且我正在使用哈希表來存儲客戶端連接時的名稱和IP地址。我現在需要添加客戶端連接時發送給服務器的另一個變量,但據我瞭解,哈希表只有2列(鍵和值)。有沒有另一種方式可以存儲這些數據而不是使用哈希表?存儲數據集的最佳方式(在一張表中)

回答

4

您可以將對象粘貼到散列表或字典中。

因此,讓自己成爲一些描述的用戶類,然後將你的用戶對象存儲在他們的名字下的字典中。

這樣就可以將其他屬性作爲當你需要添加它們時使用。

public class User 
{ 
    public string Name { get; set; } 
    public string IPAddress { get; set; } 
    public string AnotherProperty { get; set;} 
} 


Dictionary<string, User> userTable = new Dictionary<string, User>(); 

userTable.Add(userName, new User(){Name = "fred", IPAddress = "127.0.0.1", AnotherProperty = "blah"}); 

像這樣的事情

+0

輝煌的,我有這個工作和輸入的數據,但我怎麼會讀取數據?用戶名部分很簡單,但第二個字段是一個類。我會用什麼語法來提取這些數據? – 2010-10-17 13:46:32

+0

你會施放對象,所以((User)userTable [「Fred」]) – jimplode 2010-10-17 14:58:01

+0

我仍然無法讓它工作。當我只使用字典的名稱時,找不到它,但是當我使用該字典所在的類的名稱(用戶名)之前,第一個「用戶」變爲下劃線,並表示它無法將其轉換爲「字符串」。整個程序在這裏:http://csharp.pastebin.com/0ESB4RYB – 2010-10-17 19:33:40

1

你可以專門創建一個新的class用於例如sotring此信息

public class Client 
{ 
    private string Name { get; set;} 
    private string IP { get; set;} 
    //... etc. 
} 

而不是使用一個哈希表,只需將Client類的實例存儲到Session對象(或任何你使用存儲哈希表)。

如果你需要存儲一個以上的客戶的詳細信息,然後使用List<Client>或字典,如果您需要使用鍵來查找項目。試着看看對你有用。

0

我不確定這是最好的解決方案,但只是一般的知識,如果你真的需要一個表,你可以使用ADO.NET(它是.NET本地的)的一部分DataTable Class

這是不可取的原因是它不支持作爲字典的唯一鍵,並且它通常會使場景中的事情複雜化。

相關問題