You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ToString()方法调用会在堆上创建对象吗?含WriteLine执行场景问询

关于ToString()与堆对象创建的问题

1. 调用ToString()方法是否会在堆上创建对象?

不一定,要分类型来看:

  • 对于int、double这类值类型:默认的ToString()实现通常会生成新的字符串对象,而字符串属于引用类型,会在堆上分配内存。不过.NET Core/.NET 5+对0、1这类常见数值做了字符串缓存,调用这类数值的ToString()会返回缓存实例,不会创建新对象。
  • 对于引用类型:如果类型重写的ToString()返回的是缓存好的字符串(比如单例类的固定描述字符串),则不会创建新对象;否则一般会在堆上生成新的字符串对象。

2. 在执行Console.WriteLine()方法的过程中,调用num.ToString()会在堆上创建对象吗?

针对给出的代码示例:

int num = 83424;
Console.WriteLine(num.ToString());

这里num的值83424不在.NET默认缓存的常见数值范围内,调用num.ToString()时会在堆上创建一个新的字符串对象,用来存储"83424"这个字符串。


内容的提问来源于stack exchange,提问作者Naydachy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 03:52:07