2013-12-10 26 views
4

我是C#編程新手。我正在閱讀一本c#書,並且無法解釋代碼。具體來說,{0}和my_double如何在下面工作?{}表達式的含義

my_double = 3.14; 
my_decimal = 3.14; 
Console.WriteLine("\nMy Double: {0}", my_double); 

我已經看到了這種格式多次在書中卻一直沒有得到解釋。我知道這是寫到控制檯窗口,但我的問題是:

  1. 這是什麼意思?
  2. 爲什麼大括號中的{0}可以用任何其他數字代替{100}
  3. 如何在最後一行代碼中使用多個變量來表示也可以打印出my_decimal。

回答

9

1)這意味着{0}將字符串後的第一個(零指數)參數替換。它與string.Format(...)使用的語法相似。

2)與{100}更換這將意味着,第101個參數將被放置在那裏。這不是一個實際的用例。

3)可以通過在大括號(順序地)和附加參數添加額外的序號使用多個變量。就像這樣:

int param1 = 1; 
string param2 = "hello"; 
double param3 = 2.5; 
Console.WriteLine("This is parameter 1: {0}. This is parameter 2: {1}. This is parameter 3: {2}", param1, param2, param3); 

文檔:

2

這就像對於該方法的最後一個參數的索引。所以,它是說抓住第0個元素,即my_double。它是在那裏,所以你可以創建一個簡單的字符串,而無需編寫"blah" + variable + "blah" + variable2...

如果你想打印更多的項目,那麼只需添加更多的結尾,並通過其最終列表中的索引引用它們。 IE:

Console.WriteLine("{0}{1}{2}", var0, var1, var2); 
+0

好的,謝謝這是我熟悉的確切語法。我來自java背景:) – Villumanati

0

的使用方法類似string.Format。你可以實現你所尋找的是這樣的:

my_double = 3.14; 
my_decimal = 3.14; 

Console.WriteLine(「\nMy Double: {0}\nMy Decimal: {1}」, my_double, my_decimal); 
0

它的工作原理爲String.Format方法: 的{sequentialInteger}發生任何換成字符串(或字符串轉換的)各自的參數。

關於你提到的具體問題:

my_double = 3.14; 
my_decimal = 3.14; 

Console.WriteLine(「\nMy Double: {0} here your decimal: {1}」, my_double, my_decimal); 
//output: My Double: 3.14 here your decimal: 3.14 


Console.WriteLine(「\nMy Double: {2} here your decimal: {0}」, "foo", my_decimal, DateTime.Now.ToShortDate()); 
//output: My Double: 12/10/2013 here your decimal: foo 
0

見Concole.WriteLine(或的String.Format)的文檔。 {0}表示將在函數的下一個參數替換令牌....所以...

Console.WriteLine("One {0}, Two {1}, Three {2}, One {0}", 1, 2, 3); 

將產生:

One 1, Two 2, Three 3, One 1 

您可以使用{0:N}或其他格式化選項來呈現特定字符串格式的值。

http://msdn.microsoft.com/en-us/library/a0bfz20d(v=vs.110).aspx