2013-11-27 46 views
-2

我正在为我的项目中遇到的问题寻找解决方案。 在我下面的链接发现一些有用的:对象还是元组?

One Key to multiple values dictionary in C#?

但是:是不是更好地在字典中使用的对象,而不是使用一个元组?

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>>() 

我希望是谁的人可以帮助我。谢谢:)

+3

你的代码甚至没有编译。 'obj.X'不存在 – CodesInChaos

回答

3

如果obj的类型为Object,则不能在C#中使用obj.X。但是您可以创建一个自定义类,该类自Object,它包含您需要的所有字段和属性并在字典中使用它。

这确实会优于Tuple解决方案,因为myObj.SpeedmyTuple.Item2更具描述性。

但是,请注意,Tuple具有您的自定义类可能没有的某些功能,例如,如果两个元素都具有相同的元素,则返回true。使用您的自定义班级,Equals将检查参考平等,除非您覆盖它。

0

不,这不是更好的使用object - 你失去了你的强打字。

如果你关心你的代码的详细程度,你总是可以做这样的事情:

在文档的顶部:

using MyDictionary = Dictionary<KeyType, Tuple<string, int, int, int>>; 

那么你的构造函数做到这一点:

var dictionary = new MyDictionary(); 
0

而不是使用Tuple我更喜欢用两个/三个字段做一个简单的类。它是更清洁的解决方案,使用起来更简单。

相关问题