2013-11-20 16 views
6

Vì vậy, tôi đã chơi xung quanh với C# gần đây và tôi không hiểu định dạng đầu ra.Đơn giản C# đầu ra

using System; 

namespace Arrays 
{ 
    class Program 
    { 
     static void Main() 
     { 
      Random r = new Random(); 

      int[] Numbers = new int[10]; 
      for (int i = 0; i < Numbers.Length; i++) 
      { 
       Numbers[i] = r.Next(101); 
      } 

      for (int i = 0; i < Numbers.Length; i++) 
      { 
       Console.WriteLine("index {0} holds number {0}", i,Numbers[i]); 
      } 
     } 
    } 
} 

Output Code

kết quả mong muốn của tôi là index i holds number Number[i]. Vì vậy, bất cứ ai có thể giải thích những gì để thay đổi, hoặc liên kết tôi với một trang C# tốt về chủ đề định dạng đầu ra. Tôi biết có một cách để làm điều đó trong 2 dòng.

Trả lời

20

Thay đổi

Console.WriteLine("index {0} holds number {0}", i, Numbers[i]);

để

Console.WriteLine("index {0} holds number {1}", i, Numbers[i]);

Lý do: chỉ số của bạn (trong chuỗi định dạng) tham khảo các thông số sau chuỗi theo thứ tự chỉ số zero-based. Vì vậy, {0} cho tham số đầu tiên sau chuỗi, {1} cho tham số thứ hai, {2} nếu bạn có số thứ ba, v.v.

Xem this page để biết thêm thông tin.

chỉnh sửa: Bạn cũng có thể tham chiếu tham số nhiều lần trong chuỗi định dạng của mình. Ví dụ .:

Console.WriteLine(
    "index {0} holds number {1} (Numbers[{0}] == {1})", i, Numbers[i]); 

Đây cũng là tương đương với

Console.WriteLine(String.Format( 
    "index {0} holds number {1} (Numbers[{0}] == {1})", i, Numbers[i])); 
+0

Ồ, lạ ... Nghĩ {0} là một giữ chỗ cho con số, như% d trong java. –

+1

@destroyergm Không, thực tế hàm String.Format sẽ tự động gọi 'ToString()' trên mỗi tham số. Vì vậy, loại không liên quan. chỉnh sửa: mặc dù loại có thể triển khai 'IFormattable' cho một số chuỗi định dạng đặc biệt. Tuy nhiên, thứ tự các tham số xác định chỉ mục của chúng. –

5

in thứ hai của bạn là sai. Bạn sử dụng string.Format nhưng bạn không ràng buộc tham số thứ hai.

Nó nên là:

Console.WriteLine("index {0} holds number {1}", i, Numbers[i]); 
5
Console.WriteLine("index {0} holds number {1}", i, Numbers[i]); 
Các vấn đề liên quan