Saya mencoba untuk mencetak isi dari sebuah array setelah menjalankan beberapa metode yang mengubahnya, di Java saya menggunakan:
System.out.print(Arrays.toString(alg.id));
bagaimana cara melakukan ini di c #?
Anda dapat mencoba ini:
foreach(var item in yourArray)
{
Console.WriteLine(item.ToString());
}
Anda juga mungkin ingin mencoba sesuatu seperti ini:
yourArray.ToList().ForEach(i => Console.WriteLine(i.ToString()));
EDIT: untuk mendapatkan output dalam satu baris [berdasarkan komentar Anda]:
Console.WriteLine("[{0}]", string.Join(", ", yourArray));
//output style: [8, 1, 8, 8, 4, 8, 6, 8, 8, 8]
EDIT (2019): Seperti yang disebutkan dalam jawaban lain, lebih baik menggunakan Array.ForEach<T>
metode dan tidak perlu melakukan ToList
langkah.
Array.ForEach(yourArray, Console.WriteLine);
ToString
mekanismenya sendiri .ForEach
menggunakan pendekatan:expected.ToList().ForEach(Console.WriteLine);
Anda dapat menggunakan Referensi Metode daripada lambda yang akan membuat metode anonim baru yang tidak berguna.ToList
hanya dengan menggunakanForEach
metode ini adalah praktik IMHO yang mengerikan.Ada banyak cara untuk melakukannya, jawaban lainnya bagus, berikut alternatifnya:
Console.WriteLine(string.Join("\n", myArrayOfObjects));
sumber
ToString()
dan menangani pemformatan di sana.var a = new [] { "Admin", "Peon" };_log.LogDebug($"Supplied roles are '{string.Join(", ", a)}'.");
Yang paling mudah misalnya jika Anda memiliki array string yang dideklarasikan seperti string ini [] myStringArray = new string [];
Console.WriteLine("Array : "); Console.WriteLine("[{0}]", string.Join(", ", myStringArray));
sumber
Karena mengalami waktu henti di tempat kerja, saya memutuskan untuk menguji kecepatan metode berbeda yang diposting di sini.
Ini adalah empat metode yang saya gunakan.
static void Print1(string[] toPrint) { foreach(string s in toPrint) { Console.Write(s); } } static void Print2(string[] toPrint) { toPrint.ToList().ForEach(Console.Write); } static void Print3(string[] toPrint) { Console.WriteLine(string.Join("", toPrint)); } static void Print4(string[] toPrint) { Array.ForEach(toPrint, Console.Write); }
Hasilnya adalah sebagai berikut:
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
Jadi Print3 adalah yang tercepat, karena hanya memiliki satu panggilan ke
Console.WriteLine
yang tampaknya menjadi hambatan utama untuk kecepatan mencetak sebuah array. Print4 sedikit lebih cepat dari Print2 dan Print1 adalah yang paling lambat dari semuanya.Saya pikir Print4 mungkin yang paling serbaguna dari 4 yang saya uji, meskipun Print3 lebih cepat.
Jika saya melakukan kesalahan, beri tahu saya / perbaiki sendiri!
EDIT: Saya menambahkan IL yang dihasilkan di bawah ini
g__Print10_0://Print1 IL_0000: ldarg.0 IL_0001: stloc.0 IL_0002: ldc.i4.0 IL_0003: stloc.1 IL_0004: br.s IL_0012 IL_0006: ldloc.0 IL_0007: ldloc.1 IL_0008: ldelem.ref IL_0009: call System.Console.Write IL_000E: ldloc.1 IL_000F: ldc.i4.1 IL_0010: add IL_0011: stloc.1 IL_0012: ldloc.1 IL_0013: ldloc.0 IL_0014: ldlen IL_0015: conv.i4 IL_0016: blt.s IL_0006 IL_0018: ret g__Print20_1://Print2 IL_0000: ldarg.0 IL_0001: call System.Linq.Enumerable.ToList<String> IL_0006: ldnull IL_0007: ldftn System.Console.Write IL_000D: newobj System.Action<System.String>..ctor IL_0012: callvirt System.Collections.Generic.List<System.String>.ForEach IL_0017: ret g__Print30_2://Print3 IL_0000: ldstr "" IL_0005: ldarg.0 IL_0006: call System.String.Join IL_000B: call System.Console.WriteLine IL_0010: ret g__Print40_3://Print4 IL_0000: ldarg.0 IL_0001: ldnull IL_0002: ldftn System.Console.Write IL_0008: newobj System.Action<System.String>..ctor IL_000D: call System.Array.ForEach<String> IL_0012: ret
sumber
Pendekatan lain dengan
Array.ForEach<T> Method (T[], Action<T>)
metodeArray
kelasItu hanya membutuhkan satu iterasi dibandingkan dengan
array.ToList().ForEach(Console.WriteLine)
yang membutuhkan dua iterasi dan membuat secara internal array kedua untukList
(runtime iterasi ganda dan pemakaian memori ganda)sumber
Dalam C # Anda dapat mengulang melalui pencetakan array setiap elemen. Perhatikan bahwa System.Object mendefinisikan metode ToString (). Setiap jenis yang diberikan yang berasal dari System.Object () bisa menimpanya.
http://msdn.microsoft.com/en-us/library/system.object.tostring.aspx
Secara default, nama tipe lengkap dari objek akan dicetak, meskipun banyak tipe bawaan menimpa default itu untuk mencetak hasil yang lebih bermakna. Anda bisa mengganti ToString () di objek Anda sendiri untuk memberikan keluaran yang berarti.
foreach (var item in myArray) { Console.WriteLine(item.ToString()); // Assumes a console application }
Jika Anda memiliki kelas Foo Anda sendiri, Anda dapat mengganti ToString () seperti:
public class Foo { public override string ToString() { return "This is a formatted specific for the class Foo."; } }
sumber
Mulai dari C # 6.0 , ketika $ - string interpolasi telah diperkenalkan, ada satu cara lagi:
var array = new[] { "A", "B", "C" }; Console.WriteLine($"{string.Join(", ", array}"); //output A, B, C
Penggabungan dapat diarsipkan menggunakan
System.Linq
, konversikanstring[]
ke,char[]
dan cetak sebagai filestring
var array = new[] { "A", "B", "C" }; Console.WriteLine($"{new String(array.SelectMany(_ => _).ToArray())}"); //output ABC
sumber
Jika Anda ingin menjadi lucu, Anda bisa menulis metode ekstensi yang menulis
IEnumerable<object>
urutan ke konsol. Ini akan bekerja dengan enumerabel jenis apa pun, karenaIEnumerable<T>
kovarian pada T:using System; using System.Collections.Generic; namespace Demo { internal static class Program { private static void Main(string[] args) { string[] array = new []{"One", "Two", "Three", "Four"}; array.Print(); Console.WriteLine(); object[] objArray = new object[] {"One", 2, 3.3, TimeSpan.FromDays(4), '5', 6.6f, 7.7m}; objArray.Print(); } } public static class MyEnumerableExt { public static void Print(this IEnumerable<object> @this) { foreach (var obj in @this) Console.WriteLine(obj); } } }
(Saya tidak berpikir Anda akan menggunakan ini selain di kode tes.)
sumber
Saya memberikan suara positif untuk jawaban metode ekstensi oleh Matthew Watson, tetapi jika Anda bermigrasi / mengunjungi yang berasal dari Python, Anda mungkin menemukan metode seperti itu berguna:
class Utils { static void dump<T>(IEnumerable<T> list, string glue="\n") { Console.WriteLine(string.Join(glue, list.Select(x => x.ToString()))); } }
-> ini akan mencetak koleksi apa pun menggunakan pemisah yang disediakan. Ini sangat terbatas (koleksi bersarang?).
Untuk skrip (yaitu aplikasi konsol C # yang hanya berisi Program.cs, dan banyak hal terjadi di
Program.Main
) - ini mungkin baik-baik saja.sumber
ini adalah cara termudah untuk mencetak String dengan menggunakan array !!!
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace arraypracticeforstring { class Program { static void Main(string[] args) { string[] arr = new string[3] { "Snehal", "Janki", "Thakkar" }; foreach (string item in arr) { Console.WriteLine(item.ToString()); } Console.ReadLine(); } } }
sumber
Jika itu adalah array string, Anda dapat menggunakan Agregat
var array = new string[] { "A", "B", "C", "D"}; Console.WriteLine(array.Aggregate((result, next) => $"{result}, {next}")); // A, B, C, D
dengan cara itu Anda dapat membalikkan urutan dengan mengubah urutan parameter seperti itu
Console.WriteLine(array.Aggregate((result, next) => $"{next}, {result}")); // D, C, B, A
sumber
Anda dapat menggunakan for loop
int[] random_numbers = {10, 30, 44, 21, 51, 21, 61, 24, 14} int array_length = random_numbers.Length; for (int i = 0; i < array_length; i++){ if(i == array_length - 1){ Console.Write($"{random_numbers[i]}\n"); } else{ Console.Write($"{random_numbers[i]}, "); } }
sumber
Jika Anda tidak ingin menggunakan fungsi Array.
public class GArray { int[] mainArray; int index; int i = 0; public GArray() { index = 0; mainArray = new int[4]; } public void add(int addValue) { if (index == mainArray.Length) { int newSize = index * 2; int[] temp = new int[newSize]; for (int i = 0; i < mainArray.Length; i++) { temp[i] = mainArray[i]; } mainArray = temp; } mainArray[index] = addValue; index++; } public void print() { for (int i = 0; i < index; i++) { Console.WriteLine(mainArray[i]); } } } class Program { static void Main(string[] args) { GArray myArray = new GArray(); myArray.add(1); myArray.add(2); myArray.add(3); myArray.add(4); myArray.add(5); myArray.add(6); myArray.print(); Console.ReadKey(); } }
sumber