126

私が使用するJavaで、配列を変更するいくつかのメソッドを呼び出した後、配列の内容を出力しようとしています:

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

c#でこれを行うにはどうすればよいですか?

4

13 に答える 13

232

これを試すことができます:

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

また、次のようなことを試してみてください。

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

編集: [コメントに基づいて]1行で出力を取得するには:

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

編集(2019):他の回答で言及されているように、Array.ForEach<T>メソッドを使用する方が適切であり、手順を実行する必要はありませんToList

Array.ForEach(yourArray, Console.WriteLine);
于 2013-04-28T16:53:13.017 に答える
74

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

Console.WriteLine(string.Join("\n", myArrayOfObjects));
于 2013-04-28T16:55:17.093 に答える
2

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.";
    }
}
于 2013-04-28T16:53:52.867 に答える
0

かわいくしたい場合はIEnumerable<object>、コンソールにシーケンスを書き込む拡張メソッドを作成できます。IEnumerable<T>は 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);
        }
    }
}

(テスト コード以外では使用しないと思います。)

于 2013-04-28T18:13:54.717 に答える
0

マシュー・ワトソンによる拡張メソッドの回答に賛成票を投じましたが、Python から移行/訪問している場合は、そのようなメソッドが役立つ場合があります。

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

->これにより、指定されたセパレーターを使用してコレクションが印刷されます。それは非常に限られています (ネストされたコレクション?)。

スクリプト (つまり、Program.cs のみを含む C# コンソール アプリケーションで、ほとんどのことが で発生するProgram.Main) の場合、これで問題ない場合があります。

于 2016-01-26T16:42:05.817 に答える
0

これは、配列を使用して文字列を出力する最も簡単な方法です!!!

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();
        }
    }
}
于 2016-02-21T03:42:08.147 に答える