打印阵列和任何类型列表的常用方法

时间:2012-03-11 13:15:22

标签: c# debugging generics

每当我调试一段涉及数组或int,double,string等列表或代码的代码时,我更喜欢有时打印它们。我为此做的是为不同类型编写重载的printArray / printList方法。

例如。

我可能有这3种方法用于打印各种类型的数组

public void printArray(int[] a);

public void printArray(float[] b);

public void printArray(String[] s);

虽然这对我有用,但我仍然想知道是否可以使用通用方法打印任何类型的数组/列表。这也可以扩展到对象的数组/列表。

5 个答案:

答案 0 :(得分:40)

有一种有用的String.Join<T>(string separator, IEnumerable<T> values)方法。您可以传递数组或列表或任何对象的任何可枚举集合,因为通过调用.ToString()将对象转换为字符串。

int[] iarr = new int[] {1, 2, 3};
Console.WriteLine(String.Join("; ", iarr));  // "1; 2; 3"
string[] sarr = new string[] {"first", "second", "third"};
Console.WriteLine(String.Join("\n", sarr));  // "first\nsecond\nthird"

答案 1 :(得分:6)

数组和通用列表都实现IEnumerable<T>,因此只需将其用作参数类型。

public void PrintCollection<T>(IEnumerable<T> col)
{
    foreach(var item in col)
        Console.WriteLine(item); // Replace this with your version of printing
}

答案 2 :(得分:1)

public void printArray<T>(IEnumerable<T> a)
{    
   foreach(var i in a)
   {
        Console.WriteLine(i);
   }
}

答案 3 :(得分:0)

这是一个适合调试的扩展方法:

[Conditional("DEBUG")]
public static void Print<T>(this IEnumerable<T> collection)
{
    foreach(T item in collection)
    {
        Console.WriteLine(item);
    }
}

答案 4 :(得分:-1)

你可以制作像这样的通用方法

    public static void print<T>(T[] data)
    {
        foreach (T t in data) {
            Console.WriteLine(t.ToString());
        }
    }