将其他属性添加到元组c#7

时间:2017-03-16 21:04:21

标签: c# tuples c#-7.0

有一个搜索,但在这方面找不到任何东西,所以我认为目前可能无法做到。

给出以下两个元组

var a = (a: "1", b: 2);
var b = (c: "2", d: 0.1);

我是否可以将这些对象动态组合/合并为一个

var c = a + b;

理想情况下,维护属性的名称,以便我们仍然可以执行以下操作

var d = c.b + c.d;

我知道我可以做以下事情,但这对我想要实现的目标不起作用

var c = (first:a, second:b);

我正在寻找一个通用的解决方案,即我不关心每个元组中有多少属性。

此外,我知道可能存在一些问题,例如,如果有两个具有相同名称的属性会发生什么。在这种情况下,我很高兴被覆盖的财产或要改变的名称,因此它变成了a_1。

1 个答案:

答案 0 :(得分:3)

从描述用例的方式来看,您需要知道字段的名称及其值。因此,C#7的元组不会在这里提供帮助:

  1. 这些元组只映射到ValueTuple<,>ValueTuple<,,>等,即一个包含两个字段的元组和一个三元组的元组是完全不同的类型。
  2. 字段名称只是编译器技巧。它们作为编译器的元数据存在,但在运行时无法访问,例如通过反射。
  3. 您需要的是键/值对以及可以合并为新集的集合。因此,最符合您需求的类型为Dictionary<string,object>