我有一个客户端和一个服务器程序,我目前正在使用哈希表来存储连接时的客户端名称和IP地址。我现在需要添加客户端在连接时将发送给服务器的另一个变量,但据我所知,哈希表只有2列(键和值)。有没有其他方法可以存储这些数据而不是使用哈希表?
答案 0 :(得分: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"});
像这样的东西
答案 1 :(得分:1)
您可以创建一个新的class
专门用于输入此信息,例如
public class Client
{
private string Name { get; set;}
private string IP { get; set;}
//... etc.
}
只需将Client
类的实例存储到Session
对象(或用于存储HashTable的任何内容),而不是使用HashTable。
如果您需要存储多个客户端的详细信息,请使用List<Client>
或字典,如果您需要使用密钥来查找项目。试验看哪些适合你。
答案 2 :(得分:0)
我不确定它是最好的解决方案,但只是为了一般知识,如果你真的需要一个表,你可以使用DataTable Class这是ADO.NET的一部分(它是.NET的原生) 。
这是不可取的原因是它不支持作为字典的唯一键,并且它通常使您的场景中的事情变得复杂。