2013-04-28 177 views
20

陣列中的所有內容我想調用一些方法,其改變它後打印出數組的內容,在Java中使用:印刷在C#

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

我怎麼做這在C#?

回答

56

你可以試試這個:

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

你也可以嘗試這樣的事:

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

編輯:或在意見建議:

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

編輯:得到outp在一行[根據您的意見]:

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

請注意.ToString不是必需的,因爲WriteLine具有各種重載,包括使用對象的回退函數。 – 2013-04-28 17:02:32

+0

我使用了alg.Id.ToList()。ForEach(Console.WriteLine),這很好,謝謝你。是否可以實際打印出來:[8,1,8,8,4,8,6,8,8,8] – 2013-04-28 17:09:40

+0

@ErenErsönmez是的。你是對的。但是如果該項目是具有自己的「ToString」機制的自定義類,該怎麼辦? – 2013-04-28 17:09:57

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協變:(我不認爲你會使用這個除了在測試代碼)

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並將打印語句放在幫助調試中,所以這對我很有用。謝謝 – 2013-04-28 19:27:45

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

這是您可以使用數組打印字符串的最簡單方法!

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