簡體   English   中英

這些將int轉換為字符串的方法之間有什么區別?

[英]What is the difference between these methods of converting an int to a string?

string s = i.ToString();

string s = Convert.ToString(i);

string s = string.Format("{0}", i);

string s = string.Empty + i;

string s = new StringBuilder().Append(i).ToString();

它們只是最終完成同一件事的幾種方法,其想法是它們可以讓您在需要它們的任何情況下都輕松自如。 在您當前的用法中,它們在功能上都是等效的。 當然,在其他用途​​中,它們可以用於獲得截然不同的結果。

string s = i.ToString();

這是必需的,因為它必須重寫object.ToString() ,因此這成為所有其余部分的基礎。

string s = Convert.ToString(i);

這只是調用int.ToString() ,並且它們可能只是提供它,以便Convert.ToString(object)不必處理int值的裝箱和拆箱。

string s = string.Format("{0}", i);

這一點有些不同,但是仍然依賴於int.ToString() 在目前的形式,它不會是特別有用,並且特別低效率的,但基本上string.Format是格式化字符串(顯然)的快捷方式,並使用object.ToString()IFormattable.ToString()時可用並且非常有用,因為在存在格式化程序時,它用於int )。

string s = string.Empty + i;

同樣,在當前位置不是特別有用,但這支持更高級的操作。 string s = "This is the number: " + i; 它比必須顯式調用ToString容易得多,因此這只是一種語言功能-語法糖。

string s = new StringBuilder().Append(i).ToString();

這就像string.Format 就目前而言,這是一件低效的事情。 但是,如果您實際上是使用StringBuilder構建的,則不必裝箱和拆箱int會很好。


就像這樣,兩者有什么區別?

string[] nums = new [] { "1", "2", "3", "4" };

for (int v = 0; v < nums.Length; v++)
    Console.WriteLine(nums[v]);

string[] nums = ...;

foreach (var v in nums)
    Console.WriteLine(v);

它們只是做同一件事的兩種方式。

暫無
暫無

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

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