我正在尝试使用我选择的键来保存集合中的项目列表.在Java中,我只想使用Map如下:
class Test { Mapentities; public String getEntity(Integer code) { return this.entities.get(code); } }
在C#中有相同的方法吗?
System.Collections.Generic.Hashset
不使用哈希并且我无法定义自定义类型键
System.Collections.Hashtable
不是泛型类
System.Collections.Generic.Dictionary
没有get(Key)
方法
你可以索引词典,你不需要'得到'.
Dictionaryexample = new Dictionary (); ... example.Add("hello","world"); ... Console.Writeline(example["hello"]);
测试/获取值的有效方法是TryGetValue
(感谢Earwicker):
if (otherExample.TryGetValue("key", out value)) { otherExample["key"] = value + 1; }
使用此方法,您可以快速且无异常地获取值(如果存在).
资源:
字典密钥
尝试获取价值
字典<,>是等价的.虽然它没有Get(...)方法,但它确实有一个名为Item的索引属性,您可以使用索引表示法直接在C#中访问它:
class Test { Dictionaryentities; public String getEntity(int code) { return this.entities[code]; } }
如果要使用自定义键类型,则应考虑实现IEquatable <>并重写Equals(object)和GetHashCode(),除非默认(引用或结构)相等足以确定键的相等性.如果密钥在插入字典后发生变异(例如,因为变异导致其哈希码发生变化),您还应该使密钥类型不可变,以防止发生奇怪的事情.
class Test { Dictionaryentities; public string GetEntity(int code) { // java's get method returns null when the key has no mapping // so we'll do the same string val; if (entities.TryGetValue(code, out val)) return val; else return null; } }