簡體   English   中英

C#中的String.Format沒有返回修改后的int值

[英]String.Format in C# not returning modified int value

我想在值中使用逗號分隔符返回一個int值。

12345將被退回12,345

以下代碼有效:

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

按預期顯示12,345。

雖然以下代碼不起作用,但從我正在閱讀的內容中,應該可以正常工作:

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

顯示12345。

你能幫我理解為什么第二組代碼不起作用嗎?

謝謝

你不應該在格式之前ToString int。 嘗試這個:

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

在格式化程序有機會應用格式之前,您將轉換為字符串。 你在找

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

myInt.ToString()是多余的,因為您使用的是String.Format() String.Format是提供一堆對象,它會為你創建一個字符串。 無需將其轉換為string

為了使數字格式反映您需要為其提供實際數值類型而不是類型為string的數值。

當您為Format方法指定一個string它不會考慮任何數字格式,因為它已經是一個string類型。

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

當您在第二個示例中使用格式字符串“inline”時,參數的輸入必須是原始值(即int,double或其他),以便格式字符串可以對其執行一些有用的操作。

因此,從第二次調用中省略ToString將執行您想要的操作:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM