【发布时间】:2010-10-17 12:33:33
【问题描述】:
我有一个客户端和一个服务器程序,我目前正在使用哈希表来存储客户端连接时的名称和 IP 地址。我现在需要添加另一个变量,客户端在连接时将发送到服务器,但据我了解,哈希表只有 2 列(键和值)。有没有其他方法可以存储这些数据而不是使用哈希表?
【问题讨论】:
我有一个客户端和一个服务器程序,我目前正在使用哈希表来存储客户端连接时的名称和 IP 地址。我现在需要添加另一个变量,客户端在连接时将发送到服务器,但据我了解,哈希表只有 2 列(键和值)。有没有其他方法可以存储这些数据而不是使用哈希表?
【问题讨论】:
您可以将对象粘贴到哈希表或字典中。
所以让你自己成为一个具有某种描述的用户类,然后将你的用户对象以他们的名字存储在你的字典中。
这将有助于在您需要添加其他属性时使用它们。
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"});
类似的东西
【讨论】:
您可以创建一个新的class 专门用于存储此信息,例如
public class Client
{
private string Name { get; set;}
private string IP { get; set;}
//... etc.
}
不使用 HashTable,只需将 Client 类的实例存储到 Session 对象(或任何您用来存储 HashTable 的对象)中。
如果您需要存储多个客户的详细信息,请使用List<Client>,如果您需要使用键来查找项目,请使用字典。试验一下,看看什么对你有用。
【讨论】:
我不确定它是不是最好的解决方案,但就一般知识而言,如果你真的需要一个表,你可以使用 DataTable Class,它是 ADO.NET 的一部分(它是 .NET 的本机)。
不建议这样做的原因是它不支持作为字典的唯一键,而且它通常会使您的场景中的事情变得复杂。
【讨论】: