嗨,我在做学校作业,我需要将此 JAVA 代码转换为 C#
private Map<ItemID, ProductDescription> descriptions = new HashMap()<ItemID, ProductDescription>;
是否可以直接转换?
我已经决定把 ItemID 变成一个 int,而 ProductDescription 是一个类。
private Dictionary<ItemID, ProductDescription> descriptions = new Dictionary<ItemID, ProductDescription>();
hasmap 确实允许一个空键条目。在(罕见?)情况下,您将需要这个,我只需创建一个特殊的 ItemID 并将其用于 null 键。
你当然可以制作一个支持空键的字典后代,但恕我直言,这太过分了;-)
是的,当然可以。请查看以下示例:
IDictionary<int, string> h = new Dictionary<int, string>();
h.Add(1, "a");
h.Add(2, "b");
h.Add(3, "c");
SortedList<int, string> s = new SortedList<int, string>();
s.Add(1, "a");
s.Add(2, "b");
我想这就是你要找的。
是的,只需替换HashMap
为Dictionary
. 您可能希望将变量键入为 an IDictionary
(本着与 Java 代码相同的精神),但这并不是绝对必要的。
是的,您可以使用 Dictionary 而不是 HashMap 进行转换。当然,了解每个代码段并进行转换会更有效。不建议尝试逐行转换,因为您可能会错过可用于解决问题的更好方法。
这是一场很好的比赛,但是,
private IDictionary<ItemID, ProductDescription> descriptions
= new Dictionary<ItemID, ProductDescription>();
笔记
HashMap
将接受null
键值,而 asDictionary
则不会。
如果您真的想支持null
键值,我希望看到您在尝试完美的 .NetHashMap
实现之前进行推理。