当前位置:编程学习 > C#/ASP.NET >>

关于HASH表的问题.

Private Sub CONNECT(ByVal WorkId As String)
        MsgBox(ClientsList.Contains("2"))
        MsgBox(ClientsList.Contains(WorkId))
End Sub

其中调用Connect(2)时,两个MSGBOX,第一个返回TRUE,为什么第二个返回FALSE.WorkId也是2啊. --------------------编程问答-------------------- 类型不对
Connect("2")
--------------------编程问答-------------------- Hash是object,object的键值对,第一项是object,你实际存储的是string类型的key,你传递一个数字2,就会把2装箱成一个object,到hash中查找。找不到。就是你现在的情况。你可以写:
修改方法为:
Private Sub CONNECT(ByVal WorkId As String)
  MsgBox(ClientsList.Contains("2"))
  MsgBox(ClientsList.Contains(WorkId.ToString()))
End Sub

或是修改调用的方法为:
Connect("2") --------------------编程问答--------------------  MsgBox(ClientsList.Contains(WorkId.ToString()))这样还是返回FALSE.

我的程序是这样的:
1、客户端启动后自动发送START去连接服务器,发送机器号"1"到服务器,在服务器1号机端显示“运行“,同时把“1”KEY值写入HASH表中.
2、客户端异常关闭后,服务器端通过异常捕获显示“未知”
3、客户端重新启动后,还是自动发送SART去连接服务器,肯定还是发送机器号"1"到服务器,在服务器端判断在HASH表中是否有"1"这个关键KEY,如果有则显示“运行"。
注:机器号就是WORKID这个变量。
由于所有的机器都需要这样判断,所以不可能用"2"这样的具体值。
该如何解决?
谢谢以上朋友的回复。
--------------------编程问答-------------------- 麻烦给看看. --------------------编程问答-------------------- 自己顶顶 --------------------编程问答-------------------- 本来workid就是string,然后.toString不就是一样的了么 --------------------编程问答-------------------- 。。。。
补充:.NET技术 ,  VB.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,