web-dev-qa-db-fra.com

Méthode commune pour imprimer des tableaux et des listes de tous types

Chaque fois que je débogue un morceau de code qui implique des tableaux ou des listes d’entiers, de doublons, de chaînes de caractères, etc., je préfère les imprimer de temps en temps. Ce que je fais pour cela, c'est écrire des méthodes printArray/printList surchargées pour différents types.

par exemple.

Je peux avoir ces 3 méthodes pour imprimer des matrices de différents types

public void printArray(int[] a);

public void printArray(float[] b);

public void printArray(String[] s);

Bien que cela fonctionne pour moi, je veux toujours savoir s'il est possible d'avoir une méthode générique qui imprime des tableaux/listes de tous types. Cela peut-il également être étendu au tableau/à la liste d'objets?.

11
shahensha

Il existe une méthode String.Join<T>(string separator, IEnumerable<T> values) utile. Vous pouvez transmettre un tableau, une liste ou toute collection énumérable d'objets car ceux-ci seront convertis en chaîne en appelant .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"
39
Kirill

Les tableaux et les listes génériques implémentent tous IEnumerable<T>, utilisez-le donc simplement comme type de paramètre.

public void PrintCollection<T>(IEnumerable<T> col)
{
    foreach(var item in col)
        Console.WriteLine(item); // Replace this with your version of printing
}
6
M.Babcock
public void printArray<T>(IEnumerable<T> a)
{    
   foreach(var i in a)
   {
        Console.WriteLine(i);
   }
}
1
Rohit Sharma

Voici une méthode d'extension appropriée pour le débogage:

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