C# Java HashMap 等效项
从Java世界进入C#世界,有没有HashMap等价物?如果不是,你会推荐什么?
字典
可能是最接近的。 实现 System.Collections.Generic.IDictionary
接口(类似于 Java 的接口)。System.Collections.Generic.Dictionary
Map
您应该注意的一些显着差异:
put
get
myMap.put(key, value)
MyObject value = myMap.get(key)
[]
myDictionary[key] = value
MyObject value = myDictionary[key]
null
钥匙HashMap
Dictionary
ArgumentNullException
HashMap
Dictionary
[]
Add
ArgumentException
HashMap
TryGetValue
方法而不是索引来避免这种情况:Dictionary
KeyNotFoundException
[]
MyObject value = null;
if (!myDictionary.TryGetValue(key, out value)) { /* key doesn't exist */ }
Dictionary
的 包含键
方法可以帮助处理前两个问题。
我需要一个接受“空”键的字典,但似乎没有本地键,所以我写了自己的字典。实际上,这很简单。我从字典继承,添加了一个私有字段来保存“null”键的值,然后覆盖了索引器。它是这样的:
public class NullableDictionnary : Dictionary<string, string>
{
string null_value;
public StringDictionary this[string key]
{
get
{
if (key == null)
{
return null_value;
}
return base[key];
}
set
{
if (key == null)
{
null_value = value;
}
else
{
base[key] = value;
}
}
}
}
希望这能帮助将来的人。
==========
我将其修改为此格式
public class NullableDictionnary : Dictionary<string, object>