2010-10-04 39 views
4

我正在tring返回一個int值與值逗號分隔符。如12345在C#中的String.Format不返回修改int值

的follwing代碼工作

12345將返回:

int myInt = 1234567; 
MessageBox.Show(string.Format("My number is {0}", myInt.ToString("#,#"))); 

12345如預期的那樣顯示。

雖然下面的代碼確實沒有工作,但是從我讀什麼,應該工作:

int myInt = 1234567; 
MessageBox.Show(string.Format("My number is {0:#,#}", myInt.ToString())); 

12345顯示。

你能幫我理解第二組代碼不工作的原因嗎?

感謝

+0

謝謝所有的repsonses的。我很感激! – 2010-10-04 20:16:43

回答

10

你不應該ToString格式之前,INT。試試這個:

MessageBox.Show(string.Format("My number is {0:#,#}", myInt)); 
+0

+1 - 斑點! – Oded 2010-10-04 20:08:29

4

要轉換爲字符串格式有套用格式的機會了。因爲你使用的是String.Format()您正在尋找

MessageBox.Show(string.Format("My number is {0:#,#}", myInt)); 
2

myInt.ToString()是多餘的。 String.Format的要點是提供一堆對象,它會爲你創建一個字符串。無需將其轉換爲string

爲了使數字格式能夠反映出您需要給它一個實際的數值類型,而不是數字值類型string

當您給Format方法a string它不考慮任何數字格式,因爲它已經是string類型。

int myInt = 1234567; 
MessageBox.Show(string.Format("My number is {0:#,#}", myInt)); 
1

當您使用格式字符串「內聯」作爲你的第二個例子中,輸入參數必須是原始值(即INT,雙,或其他),這樣的格式字符串可以做一些有用的事情用它。

所以省略了toString從第二個呼叫會做你想要什麼:

int myInt = 1234567; 
MessageBox.Show(string.Format("My number is {0:#,#}", myInt));