zoukankan      html  css  js  c++  java
  • 在小组里遇到的一个让我产生迷惑的题

    如上图,我模糊记得好像是hashtable是可以存一个'null'的key,值为'null'的键值对的,所以判断上面的那个是正确的···
    然后看别人的,说,hashtable存的是对象,可以直接跟null判断,dictionary<string,string>存的是引用,不能直接判断···
    接着又看到有人说,这两个都是错的,因为这两个都可以存一个键和值都为'null'的键值对···
    这下我的脑袋瓜子彻底变浆糊了···
    想起一句话,“实践出真知”,把代码敲出来运行了下下,嘿,事实证明,hashtable的判断是正确的,因为它出结果了,而dictionary<string,string>没有,可是为什么了?
    我try{}catch{}了下下,发现,dictionary<string,string>抛出了一个KeyNotfoundException的异常,而且是 throw的,想了下,这可能是hashtable存的是对象,可以直接跟null判断,dictionary<string,string>存的是引用,上面题中,都只是声明而没有赋值,hashtable因为是存对象的,所以可以直接判断,dictionary<string,string>存的是引用,在找“name1”的引用是,发现不存在,所以就抛出了KeyNotfoundException异常。
    总结:hashtable因为存的是对象,所以可以直接跟null判断,而dictionary<string,string>存的是引用,需要先判断查找的key是否存在,然后才能跟null判断。
    刚又临时起意,给这个题目里的两个东东在声明之后,都添加一个了一个键值对,ht.Add("name1", null);和dt.Add("name2", null);,然后果然出现问题了,两个if判断里的东西都会执行了,这明显不是我们要的结果,name1和name2明明都存在的,结果这么一判断成不存在了,很复杂,感觉这题出的有问题了,我们应该是去判断这个键是否存在才是,ht.ContainsKey("name1")和dt.ContainsKey("name2")这样才是正解。--By 2011-4-27 14:00:00
                                                    ----菜鸟见识,错者请指出
  • 相关阅读:
    【翻译】Flink Table Api & SQL —Streaming 概念 —— 时态表
    【翻译】Flink Table Api & SQL —Streaming 概念 ——在持续查询中 Join
    【翻译】Flink Table Api & SQL —Streaming 概念 ——时间属性
    【翻译】Flink Table Api & SQL —Streaming 概念 ——动态表
    【翻译】Flink Table Api & SQL ——Streaming 概念
    Kubernetes控制器之Deployment
    Kubernetes中nodeport,port,targetport对比
    Kubernetes控制器之ReplicaSet
    Kubernetes之Pods
    Kubernetes之使用ConfigMap配置Pod
  • 原文地址:https://www.cnblogs.com/13142088/p/2030208.html
Copyright © 2011-2022 走看看