Ich versuche, den Inhalt eines Arrays auszudrucken, nachdem ich einige Methoden aufgerufen habe, die es ändern. In Java verwende ich:
System.out.print(Arrays.toString(alg.id));
Wie mache ich das in c #?
Sie können dies versuchen:
foreach(var item in yourArray)
{
Console.WriteLine(item.ToString());
}
Vielleicht möchten Sie auch so etwas ausprobieren:
yourArray.ToList().ForEach(i => Console.WriteLine(i.ToString()));
BEARBEITEN: um die Ausgabe in einer Zeile zu erhalten [basierend auf Ihrem Kommentar]:
Console.WriteLine("[{0}]", string.Join(", ", yourArray));
//output style: [8, 1, 8, 8, 4, 8, 6, 8, 8, 8]
EDIT (2019): Wie in anderen Antworten erwähnt, ist es besser, die Array.ForEach<T>
Methode zu verwenden , und es besteht keine Notwendigkeit, den ToList
Schritt auszuführen.
Array.ForEach(yourArray, Console.WriteLine);
ToString
Mechanismus war?ForEach
Verwendung des Ansatzes:expected.ToList().ForEach(Console.WriteLine);
Sie können anstelle eines Lambda eine Methodenreferenz verwenden, die eine neue nutzlose anonyme Methode erstellt.ToList
nur der Verwendung derForEach
Methode ist meiner Meinung nach eine schreckliche Praxis.Es gibt viele Möglichkeiten, die anderen Antworten sind gut, hier ist eine Alternative:
quelle
Am einfachsten, z. B. wenn Sie ein String-Array wie dieses deklariert haben [] myStringArray = new string [];
quelle
Aufgrund von Ausfallzeiten bei der Arbeit habe ich mich entschlossen, die Geschwindigkeit der verschiedenen hier aufgeführten Methoden zu testen.
Dies sind die vier Methoden, die ich verwendet habe.
Die Ergebnisse sind wie folgt:
Strings per trial: 10000 Number of Trials: 100 Total Time Taken to complete: 00:01:20.5004836 Print1 Average: 484.37ms Print2 Average: 246.29ms Print3 Average: 70.57ms Print4 Average: 233.81ms
Print3 ist also am schnellsten, da es nur einen Aufruf gibt, der
Console.WriteLine
der Hauptengpass für die Geschwindigkeit des Ausdrucks eines Arrays zu sein scheint. Print4 ist etwas schneller als Print2 und Print1 ist der langsamste von allen.Ich denke, dass Print4 wahrscheinlich die vielseitigste der 4 ist, die ich getestet habe, obwohl Print3 schneller ist.
Wenn ich Fehler gemacht habe, können Sie mich diese gerne selbst mitteilen / beheben!
EDIT: Ich füge die generierte IL unten hinzu
quelle
Ein anderer Ansatz mit der
Array.ForEach<T> Method (T[], Action<T>)
Methode derArray
KlasseDies erfordert nur eine Iteration im Vergleich zu
array.ToList().ForEach(Console.WriteLine)
zwei Iterationen und erstellt intern ein zweites Array für dieList
(doppelte Iterationslaufzeit und doppelter Speicherverbrauch).quelle
In C # können Sie das Array durchlaufen und jedes Element drucken. Beachten Sie, dass System.Object eine Methode ToString () definiert. Jeder Typ, der von System.Object () abgeleitet ist, kann dies überschreiben.
http://msdn.microsoft.com/en-us/library/system.object.tostring.aspx
Standardmäßig wird der vollständige Typname des Objekts gedruckt, obwohl viele integrierte Typen diesen Standard überschreiben, um ein aussagekräftigeres Ergebnis zu drucken. Sie können ToString () in Ihren eigenen Objekten überschreiben, um eine aussagekräftige Ausgabe bereitzustellen.
Wenn Sie Ihre eigene Klasse Foo hätten, könnten Sie ToString () wie folgt überschreiben:
quelle
Wenn Sie süß werden möchten, können Sie eine Erweiterungsmethode schreiben, die eine
IEnumerable<object>
Sequenz in die Konsole schreibt . Dies funktioniert mit Aufzählungen jeglichen Typs, daIEnumerable<T>
T: kovariant ist:(Ich glaube nicht, dass Sie dies anders als im Testcode verwenden würden.)
quelle
Ich habe die Antwort der Erweiterungsmethode von Matthew Watson positiv bewertet, aber wenn Sie von Python aus migrieren / besuchen, ist eine solche Methode möglicherweise hilfreich:
-> Hiermit wird jede Sammlung mit dem mitgelieferten Trennzeichen gedruckt. Es ist ziemlich begrenzt (verschachtelte Sammlungen?).
Für ein Skript (dh eine C # -Konsolenanwendung, die nur Program.cs enthält und in der die meisten Dinge passieren
Program.Main
) ist dies möglicherweise in Ordnung.quelle
Dies ist der einfachste Weg, den String mit einem Array zu drucken !!!
quelle
Ausgehend von C # 6.0 , wenn $ - String Interpolation eingeführt wurde, gibt es eine weitere Möglichkeit:
Die Verkettung kann mithilfe von archiviert werden
System.Linq
. Konvertieren Sie diestring[]
inchar[]
und drucken Sie alsstring
quelle
Wenn es sich um ein Array von Zeichenfolgen handelt, können Sie Aggregate verwenden
Auf diese Weise können Sie die Reihenfolge umkehren, indem Sie die Reihenfolge der Parameter wie folgt ändern
quelle
Wenn Sie die Array-Funktion nicht verwenden möchten.
quelle