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();
答案 0 :(得分:3)
他们只是通过几种方式做同样的事情,这个想法是,它们可以让您在任何需要它们的环境中轻松自如。在您当前的使用中,它们在功能上都是等效的。当然,在其他用途中,它们可用于实现截然不同的结果。
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);
他们只是两种基本相同的方式。