2013-04-28 2 views
20

で、配列のすべての内容を印刷する私は、それを変更するいくつかのメソッドを呼び出した後に、配列の内容をプリントアウトしようとしているJavaで私が使用します。は、C#

System.out.print(Arrays.toString(alg.id)); 

は、私はC#でこれをどのように行うのですか?

yourArray.ToList().ForEach(i => Console.WriteLine(i.ToString())); 

EDIT

はまた
foreach(var item in yourArray) 
{ 
    Console.WriteLine(item.ToString()); 
} 

あなたはこのような何かを試してみたいことがあります。

答えて

56

あなたはこれを試すことやコメントで提案されているように:

yourArray.ToList().ForEach(Console.WriteLine); 

編集: outpを取得するあなたのコメントに基づいて1行にしてください:

Console.WriteLine("[{0}]", string.Join(", ", yourArray)); 
//output style: [8, 1, 8, 8, 4, 8, 6, 8, 8, 8] 
+2

WriteLineには、オブジェクトを受け取るフォールバックを含むさまざまなオーバーロードがあるため、.ToStringは不要です。 –

+0

私はalg.Id.ToList()を使用しました。ForEach(Console.WriteLine)は、うまくいきました。 [8,1,8,8,4,8,6,8,8,8]のように実際に印刷することは可能ですか? –

+0

@ErenErsönmezはい。あなたが正しいです。アイテムが独自の 'ToString'メカニズムを持つカスタムクラスであればどうでしょうか? –

3

C#では、各要素を印刷する配列をループすることができます。 System.ObjectはToString()メソッドを定義しています。 System.Object()から派生した任意の型はそれをオーバーライドできます。

現在のオブジェクトを表す文字列を返します。多くの組み込み型より意味のある結果を印刷すること、デフォルトをオーバーライドしても

http://msdn.microsoft.com/en-us/library/system.object.tostring.aspx

は、デフォルトでは、オブジェクトの完全な型名は、印刷されます。独自のオブジェクトでToString()をオーバーライドして意味のある出力を提供できます。

foreach (var item in myArray) 
{ 
    Console.WriteLine(item.ToString()); // Assumes a console application 
} 

あなたがあなた自身のFooクラスを持っていた場合、あなたはToStringメソッド(オーバーライドすることができますが)のような:

public class Foo 
{ 
    public override string ToString() 
    { 
     return "This is a formatted specific for the class Foo."; 
    } 
} 
25

それを行うには多くの方法がありますが、他の回答には良いですが、ここで代替です:

Console.WriteLine(string.Join("\n", myArrayOfObjects)); 
1

かわいくしたい場合は、コンソールにIEnumerable<object>シーケンスを書き込んだ拡張メソッドを書くことができます。 IEnumerable<T>がTに共変であるので、これは、任意のタイプのenumerablesで動作します:

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); 
     } 
    } 
} 

(私はあなたがテストコードの場合よりも、この他を使用したいとは思わない。)

+0

完全に理解するのに時間がかかりましたが、それは非常に便利です。私はPythonに慣れていて、デバッグを助けるためにprint文を入れていますので、これは私にとっては良いことです。 –

3

最も簡単なものを:

 Console.WriteLine("Array : "); 
     Console.WriteLine("[{0}]", string.Join(", ", <yourarray>)); 
0

私はマシュー・ワトソンによって拡張メソッドの答えをupvotedが、あなたは/ Pythonのから来た訪問移行している場合、あなたはそのような方法が役立つことがあります。

class Utils 
{ 
    static void dump<T>(IEnumerable<T> list, string glue="\n") 
    { 
     Console.WriteLine(string.Join(glue, list.Select(x => x.ToString()))); 
    } 
} 

- >これは、提供された区切り文字を使用してすべてのコレクションを印刷します。それはかなり制限されています(ネストされたコレクション?)。

スクリプト(Programのみを含むC#コンソールアプリケーション)の場合。cs、ほとんどのことはProgram.Mainで起こります)。これはうまくいくかもしれません。

1

これは配列を使用して文字列を印刷できる最も簡単な方法です。