来自原始数据类型(int,char等)的内存是在它们离开作用域后立即释放,还是添加到垃圾收集中以供以后发布?
考虑:
For x as integer=0 to 1000 dim y as integer Next
如果这不会将垃圾收集器中的1000个整数添加到以后清理,它如何处理字符串对象?这会创建1000个字符串以便以后清理吗?
For x as integer=0 to 1000 dim y as string="" Next
如何只包含int,string等...数据类型的结构?
仅包含托管资源的类?
好的,只有两个答案,已经有错误信息...
字符串不是基本类型
字符串不是值类型
值类型值并不总是在堆栈上创建 - 它取决于变量的位置.如果它是类的一部分,它将与该对象的其余数据一起存储在堆上.
如果它们被捕获,甚至局部变量也可以在堆上结束(例如,在匿名函数和迭代器块中)
诸如""之类的字符串文字被实习 - 它们总是解析为相同的字符串.该循环实际上不会创建任何字符串.
有关更多信息,请参阅我的文章,了解.NET内存中的内容.您可能还想考虑它是否重要.