我正在尝试使用元组的TRest部分,以便我可以说将14个字符串添加到元组列表中.
List<Tuple<string, string, string, string, string, string, string, Tuple<string, string, string, string, string, string, string>>> list = new List<Tuple<string, string, string, string, string, string, string, Tuple<string, string, string, string, string, string, string>>>();
Run Code Online (Sandbox Code Playgroud)
创建第二个元组列表(list2),我将7个字符串添加到:
Tuple<string, string, string, string, string, string, string> list2 = Tuple.Create(test8, test9, test10, test11, test12, test13, test14);
Run Code Online (Sandbox Code Playgroud)
然后将所有字符串添加到第一个列表:
list.Add(Tuple.Create(test1, test2, test3, test4, test5, test6, test7, list2));
Run Code Online (Sandbox Code Playgroud)
我收到了一个重载错误,在我做一些根本不正确的事情之前,我没有尝试过使用它吗?
要在元组上使用TRest,你必须包含另一个元组,例如16元组的int将是:
Tuple<int, int, int, int, int, int, int,
Tuple<int, int, int, int, int, int, int,
Tuple<int,int>>> t16;
Run Code Online (Sandbox Code Playgroud)
然后,访问元素1-7:
var x1 = t16.Item1;
...
var x7 = t16.Item7;
Run Code Online (Sandbox Code Playgroud)
然后,访问元素8-14:
var x8 = t16.Rest.Item1;
...
var x14 = t16.Rest.Item7;
Run Code Online (Sandbox Code Playgroud)
然后,访问元素15,16:
var x15 = t16.Rest.Rest.Item1;
var x16 = t16.Rest.Rest.Item2;
Run Code Online (Sandbox Code Playgroud)
等等.如果感兴趣的话,我有一篇博文在这里潜入他们...
更新:
您的具体错误是因为Tuple.Create()8类型参数旨在创建八重奏,而不是九元组及更高版本.从而:
Tuple.Create<T1, T2, T3, T4, T5, T6, T7, T8>(...)
Run Code Online (Sandbox Code Playgroud)
实际创造一个
Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8>>
Run Code Online (Sandbox Code Playgroud)
既然你传递了一个
Tuple<string, string, string, string, string, string, string>
Run Code Online (Sandbox Code Playgroud)
作为T8,它将Septuple包装在第8个元素中,这不是你所期望的.
这就是为什么它被抱怨的类型不匹配,如果你在它的错误通知Tuple<Tuple<string, string, string, string, string, string, string>>为T8,这是包裹在一个元组septuple.
因此,如果您想要隐式输入,或者手工构建它,您需要为Tuple编写一些9元组及以上的扩展:
list.Add(new Tuple<string, string, string, string, string, string, string,
Tuple<string, string, string, string, string, string, string>>(
test1, test2, test3, test4, test5, test6, test7, list2));
Run Code Online (Sandbox Code Playgroud)
这只是大元组可能混淆的众多原因之一.