gpt4 book ai didi

c# - 使用 Tuple 的 TRest 组件

转载 作者:行者123 更新时间:2023-11-30 15:05:10 25 4
gpt4 key购买 nike

我正在尝试使用元组的 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>>>();   

创建第二个元组列表 (list2),我将向其中添加 7 个字符串:

Tuple<string, string, string, string, string, string, string> list2 = Tuple.Create(test8, test9, test10, test11, test12, test13, test14);

然后将所有字符串添加到第一个列表中:

list.Add(Tuple.Create(test1, test2, test3, test4, test5, test6, test7, list2));

我遇到了一个过载错误,我之前没有尝试过使用它,我是不是做了一些根本不正确的事情?

最佳答案

要在元组上使用 TRest,您必须包含另一个元组,例如 16 元组的 int 将是:

Tuple<int, int, int, int, int, int, int, 
Tuple<int, int, int, int, int, int, int,
Tuple<int,int>>> t16;

然后,访问元素 1-7:

var x1 = t16.Item1;
...
var x7 = t16.Item7;

然后,访问元素 8-14:

var x8 = t16.Rest.Item1;
...
var x14 = t16.Rest.Item7;

然后,访问元素 15、16:

var x15 = t16.Rest.Rest.Item1;
var x16 = t16.Rest.Rest.Item2;

等等。我有一篇博文深入探讨了它们 here如果有兴趣...

更新:

你的具体错误是因为Tuple.Create() with 8 type parameters 旨在创建 Octuples,而不是 Nine-Tuples 及以上。因此:

Tuple.Create<T1, T2, T3, T4, T5, T6, T7, T8>(...)

实际上创建了一个

Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8>>

因为你正在传递一个

Tuple<string, string, string, string, string, string, string>

作为 T8,它将 Septuple 包裹在第 8 个元素内,这不是您所期望的。

这就是它提示类型不匹配的原因,如果您在错误中注意到它有 Tuple<Tuple<string, string, string, string, string, string, string>>作为 T8,它是一个包裹在一个元组中的七元组。

因此,如果您想要隐式类型,您要么需要为九元组及以上的元组编写一些扩展,要么手动构建它:

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));

这只是大型元组可能令人困惑的众多原因之一。

关于c# - 使用 Tuple 的 TRest 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9299319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com