迭代元组中的项目

Chr*_*ris 3 c# loops tuples console-application

我有三个循环的方法:

    public void Print(Tuple<List<DateTime>, List<double>, List<string>> dataToPrint)
    {
        foreach (var item in dataToPrint.Item1)
        {
            Console.WriteLine(item);
        }
        foreach (var item in dataToPrint.Item2)
        {
            Console.WriteLine(item);
        }
        foreach (var item in dataToPrint.Item3)
        {
            Console.WriteLine(item);
        }
    }
Run Code Online (Sandbox Code Playgroud)

是否可以只使用一个循环来打印屏幕上列表内容的所有项目?

Ser*_*kiy 7

当然,您可以将所有列表连接成一个object或多个string项目序列,但这种连接不会使您的代码更具可读性.但您可以创建简单的扩展方法,将任何序列的内容转储到控制台:

public static void Dump<T>(this IEnumerable<T> source)
{
    foreach(var item in source)
       Console.WriteLine(item);
}
Run Code Online (Sandbox Code Playgroud)

你的代码看起来像(根本没有循环):

public void Print(Tuple<List<DateTime>, List<double>, List<string>> dataToPrint)
{
    dataToPrint.Item1.Dump();
    dataToPrint.Item2.Dump();
    dataToPrint.Item3.Dump();
}
Run Code Online (Sandbox Code Playgroud)

我还将使用命名参数,自定义类型或值元组将这三个值传递给方法.