[英]When comparing a string and an int, what is the difference between converting them both to a string vs converting them both to an 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.