【发布时间】:2018-06-19 01:34:20
【问题描述】:
我最近遇到了这个关于哈希表的问题,想知道是否有人知道原因。请参阅下面的小代码示例和输出。
Hashtable temp = new Hashtable();
temp["a"] = ("100")[0].ToString();
temp["b"] = "1";
if(temp["a"] == "1")
Response.Write("1");
else
Response.Write("0");
if(temp["b"] == "1")
Response.Write("1");
else
Response.Write("0");
输出为“01”。为什么不是“11”? temp["a"] 被分配了一个字符串,那为什么实际上没有发生呢?
任何可以向我解释这一点或将我指向可能包含解释的文章的人都会有很大的帮助。一直困扰着我。
谢谢!
【问题讨论】:
-
您正在通过引用比较字符串。使用泛型。
-
或在比较之前强制转换。但泛型将是理想的解决方案。
-
使用泛型有相同的输出。我不是在寻找让它工作的解决方案我在寻找为什么它不起作用的答案。在比较之前我不需要投射它。它被分配了一个字符串。
-
另外你应该使用
Dictionary而不是HashTable,除非有充分的理由不... -
@Aomine 这就是我要找的。谢谢。