为什么我们不能给元组中的属性命名?

Pau*_*ews 4 c# tuples

是否有一个特定的原因,我们必须将元组中的属性称为Item1,Item2等.这对我来说似乎是一个坏主意,因为它们很容易混淆在你的代码中.能够为您的物业命名是不是更有意义,即.红色,绿色,蓝色?

Hen*_*man 5

如果你想要名字,不要使用元组.

匿名类型:

var t = new { Green = 1, Red  = "nice" };

if (t.Green > 0) ....
Run Code Online (Sandbox Code Playgroud)


Cha*_*ion 5

Tuple <...>类只是普通的C#类.C#没有提供动态命名属性的方法(除了使用Dictionary或像ExpandoObject这样的动态对象).但是,C#确实通过匿名类型提供了你想要的东西:

var x = new { Red = 10, Blue = 20, Green = 30 }
var sum = x.Red + x.Blue + x.Green;
Run Code Online (Sandbox Code Playgroud)

匿名类型工作的原因是它们只是一种方便的语法,用于动态定义自定义元组类.

它们具有像命名元组一样的优点,但缺点是程序员不能命名(因此你不能创建一个显式返回匿名类型的方法).