对象还是元组?

时间:2013-11-27 11:08:48

标签: c# object tuples

我正在寻找解决我在项目中遇到的问题的方法。 在下面的链接中,我发现了一些有用的东西:

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

我希望有人可以帮助我。谢谢:))

3 个答案:

答案 0 :(得分:3)

如果obj.X的类型为obj,则无法在C#中执行Object。但您可以创建从Object 派生的自定义类,其中包含您需要的所有字段和属性,并在字典中使用它。

这确实优于Tuple解决方案,因为myObj.SpeedmyTuple.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,而是选择使用两个/三个字段创建一个简单的类。这是更清洁的解决方案,它更容易使用。