关于HASH表的问题.

wfbull 2010-06-28 01:08:14
Private Sub CONNECT(ByVal WorkId As String)
MsgBox(ClientsList.Contains("2"))
MsgBox(ClientsList.Contains(WorkId))
End Sub

其中调用Connect(2)时,两个MSGBOX,第一个返回TRUE,为什么第二个返回FALSE.WorkId也是2啊.
...全文
80 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wfbull 2010-07-01
  • 打赏
  • 举报
回复
自己顶顶
queen25 2010-07-01
  • 打赏
  • 举报
回复
。。。。
Fenix1986 2010-07-01
  • 打赏
  • 举报
回复
本来workid就是string,然后.toString不就是一样的了么
wfbull 2010-06-29
  • 打赏
  • 举报
回复
麻烦给看看.
兔子-顾问 2010-06-28
  • 打赏
  • 举报
回复
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")
只在此山中 2010-06-28
  • 打赏
  • 举报
回复
类型不对
Connect("2")
wfbull 2010-06-28
  • 打赏
  • 举报
回复
MsgBox(ClientsList.Contains(WorkId.ToString()))这样还是返回FALSE.

我的程序是这样的:
1、客户端启动后自动发送START去连接服务器,发送机器号"1"到服务器,在服务器1号机端显示“运行“,同时把“1”KEY值写入HASH表中.
2、客户端异常关闭后,服务器端通过异常捕获显示“未知”
3、客户端重新启动后,还是自动发送SART去连接服务器,肯定还是发送机器号"1"到服务器,在服务器端判断在HASH表中是否有"1"这个关键KEY,如果有则显示“运行"。
注:机器号就是WORKID这个变量。
由于所有的机器都需要这样判断,所以不可能用"2"这样的具体值。
该如何解决?
谢谢以上朋友的回复。

16,549

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧