【问题标题】:Object or Tuple? [closed]对象还是元组? [关闭]
【发布时间】:2013-11-27 11:08:48
【问题描述】:

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

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

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

【问题讨论】:

  • 您的代码甚至无法编译。 obj.X 不存在

标签: c# object tuples


【解决方案1】:

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

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

但是请注意,Tuples 具有您的自定义类可能没有的一些功能,例如,如果 tuple1.Equals(tuple2) 具有相同的元素,则返回 true。对于您的自定义类,Equals 将检查引用相等性,除非您覆盖它。

【讨论】:

    【解决方案2】:

    不,最好使用object - 你失去了强类型。

    如果您担心代码的冗长,可以随时执行以下操作:

    在文档顶部:

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

    然后你的构造函数这样做:

    var dictionary = new MyDictionary();
    

    【讨论】:

      【解决方案3】:

      我更喜欢创建一个包含两个/三个字段的简单类,而不是使用元组。这是更清洁的解决方案,并且更易于使用。

      【讨论】:

        猜你喜欢
        • 2013-06-22
        • 2023-04-07
        • 2010-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-17
        • 2012-01-19
        相关资源
        最近更新 更多