我正在寻找解决我在项目中遇到的问题的方法。 在下面的链接中,我发现了一些有用的东西:
One Key to multiple values dictionary in C#?
但是:在字典中使用Object而不是使用元组更好吗?
Object obj = new Object();
var dict = new Dictionary<KeyType, obj>();
foreach(KeyType kt in dict)
{
obj.X = value1;
obj.Y = value2;
}
而不是:
var dict = new Dictionary<KeyType, Tuple<string, int, int, int>>()
我希望有人可以帮助我。谢谢:))
答案 0 :(得分:3)
如果obj.X
的类型为obj
,则无法在C#中执行Object
。但您可以创建从Object
派生的自定义类,其中包含您需要的所有字段和属性,并在字典中使用它。
这确实优于Tuple
解决方案,因为myObj.Speed
比myTuple.Item2
更具描述性。
但请注意,Tuple
具有您的自定义类可能没有的某些功能,例如,如果两者具有相同的元素,则tuple1.Equals(tuple2)
将返回true。使用自定义类时,Equals
将检查引用相等性,除非您覆盖它。
答案 1 :(得分:0)
不,使用object
并不是更好 - 你失去了强力打字。
如果您担心代码的详细程度,您可以随时执行以下操作:
在您的文档顶部:
using MyDictionary = Dictionary<KeyType, Tuple<string, int, int, int>>;
然后你的构造函数会这样做:
var dictionary = new MyDictionary();
答案 2 :(得分:0)
我没有使用Tuple,而是选择使用两个/三个字段创建一个简单的类。这是更清洁的解决方案,它更容易使用。