首页 > 解决方案 > 无法将元组添加到列表

问题描述

我有一个元组列表,无法将它们添加到列表中。是什么导致了这个编译错误?https://dotnetfiddle.net/vhR3vP

    using System;
    using System.Collections.Generic;               
public class Program
{
    public static void Main()
    {
        Console.WriteLine("Hello World");
         List<Tuple<string,string,string,string,string,string,string,string>> ExecutionsDetailsTuple =new  List<Tuple<string,string,string,string,string,string,string,string>>(); // format executionid, symbol, quantity, price, tradedirection, orderaction, account, executiontime
        var person= Tuple.Create<string,string,string,string,string,string,string,string>("1","2","3","4","5","6","7","8");
        ExecutionsDetailsTuple.Add(person);
        
    }
}

编译错误:

Compilation error (line 10, col 3): The best overloaded method match for 'System.Collections.Generic.List<System.Tuple<string,string,string,string,string,string,string,string>>.Add(System.Tuple<string,string,string,string,string,string,string,string>)' has some invalid arguments
Compilation error (line 10, col 30): Argument 1: cannot convert from 'System.Tuple<string,string,string,string,string,string,string,System.Tuple<string>>' to 'System.Tuple<string,string,string,string,string,string,string,string>'

标签: c#tuples

解决方案


带有八个参数的返回类型Tuple.Create<>定义为:

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

注意Tuple<T8>最后的。您认为您会Tuple<T1,T2,T3,T4,T5,T6,T7,T8>使用该方法创建一个实例Tuple.Create(),但事实并非如此。

由于Tuple类的泛型参数数量限制为 8 个,但可能需要超过 8 个值,因此类被设计为第 8 个泛型参数必须是Tuple类型。所以一般结构将是:七个值加上Tuple剩余值的附加值。假设您要创建一个包含 25 个值的元组,您将构建一个包含四个Tuple实例 (7+7+7+4) 的链。

当您想使用包含八个值的元组时,您必须将变量的类型更改为List<Tuple<string,string,string,string,string,string,string,Tuple<string>>>.


推荐阅读