我对C#中的ToString()
方法很好奇。以以下代码为例:
object height = 10;
string heightStr = height.ToString();
当我在
height
上调用 ToString()
方法时,我会得到一个字符串类型的返回值。这个字符串是否由运行时分配内存?是的,运行时会为您创建或请求的任何字符串对象分配内存,包括从方法调用返回的对象。
但是,这绝对不是您需要担心的事情。它不会对应用程序的性能产生任何明显影响,您不应该陷入过早优化代码的诱惑。
Int32.ToString
方法非常快。它调用在CLR级别编写的本机代码,这不太可能成为任何应用程序的性能瓶颈。
实际上,这里的真正性能问题将是装箱,即将值类型转换为类型object
,然后再转换回来的过程。这是因为您将height
变量声明为object
类型,然后将整数值赋给它。
更好的做法是将height
明确声明为int
类型,如下所示:
int height = 10;
string heightStr = height.ToString();
int
,确实有一个明确的int.ToString(),但并不总是如此。 - Marc Gravell是的。 在这种情况下,创建一个类的新实例(如字符串类)将为实例分配内存。