C# 对象还是元组?

C# 对象还是元组?,c#,object,tuples,C#,Object,Tuples,我在为我的项目中遇到的问题寻找解决方案。 在下面的链接中,我发现了一些有用的东西: 但是:在字典中使用对象而不是元组不是更好吗 Object obj = new Object(); var dict = new Dictionary<KeyType, obj>(); foreach(KeyType kt in dict) { obj.X = value1; obj.Y = value2; } objectobj=newobject(); var dict=新字典(); f

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

但是:在字典中使用对象而不是元组不是更好吗

Object obj = new Object();
var dict = new Dictionary<KeyType, obj>();
foreach(KeyType kt in dict)
{
  obj.X = value1;
  obj.Y = value2;
}
objectobj=newobject();
var dict=新字典();
foreach(dict中的kt键型)
{
对象X=值1;
对象Y=值2;
}
而不是:

var dict = new Dictionary<KeyType, Tuple<string, int, int, int>>()
var dict=newdictionary()

我希望有人能帮助我。谢谢:)

不,使用
对象并不是更好的方法,因为您的强输入功能被破坏了

如果您担心代码的冗长性,您随时可以这样做:

在文档顶部:

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

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

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


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

我宁愿创建一个包含两个/三个字段的简单类,而不是使用Tuple。这是一个更干净的解决方案,更易于使用。

您的代码甚至不需要编译<代码>对象X
不存在
var dictionary = new MyDictionary();