C# 如何使用Tuple.Create()方法创建这样的元组
如果我写这样的代码:C# 如何使用Tuple.Create()方法创建这样的元组,c#,tuples,C#,Tuples,如果我写这样的代码: var a = Tuple.Create(1,2,3); var b = Tuple.Create(1,2,3,4,5,6,7,a); 它实际上创建了一个元组,其类型为: Tuple<int,int,int,int,int,int,int,Tuple<Tuple<int,int,int>>> 元组 我如何使用Tuple.Create()方法创建一个元组,如: Tuple<int,int,int,int,int,int,int,
var a = Tuple.Create(1,2,3);
var b = Tuple.Create(1,2,3,4,5,6,7,a);
它实际上创建了一个元组,其类型为:
Tuple<int,int,int,int,int,int,int,Tuple<Tuple<int,int,int>>>
元组
我如何使用Tuple.Create()方法创建一个元组,如:
Tuple<int,int,int,int,int,int,int,Tuple<int,int,int>>
元组
你不能。根据MSDN:
NET Framework直接支持具有1到7个元素的元组。此外,通过在元组对象的Rest属性中嵌套元组对象,可以创建八个或更多元素的元组
正因为如此,您得到了Tuple
,其中Tuple
作为第8个元素。如上所述,Tuple.Create
方法的返回值是System.Tuple
,其中第8个参数被包装到新的Tuple中。如果您将tuple作为最后一个参数传递,那么这个tuple将被包装到tuple中,您将得到现在的tuple
这种创建方法的原理非常简单:
static Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8>> Create<T1, T2, T3, T4, T5, T6, T7, T8>(
T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8)
{
return new Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8>>(
item1, item2, item3, item4, item5, item6, item7, new Tuple<T8>(item8));
}
为什么您更喜欢这样的元组而不是具有命名属性的数据对象?
static Tuple<T1, T2, T3, T4, T5, T6, T7, T8> CreateTuple<T1, T2, T3, T4, T5, T6, T7, T8>(
T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8)
where T8: ITuple
{
return new Tuple<T1, T2, T3, T4, T5, T6, T7, T8>(
item1, item2, item3, item4, item5, item6, item7, item8);
}
var a = Tuple.Create(1,2,3);
var b = CreateTuple(1,2,3,4,5,6,7,a);
// Tuple<int,int,int,int,int,int,int,Tuple<int,int,int>>
var point = (x: 1, y: 2, z: 3);
var rocket = (id: 1, speed: 100, location: point);
// rocket.location.y