当我们声明一个变量时,变量本身是否会消耗内存?
class IHaveNothing
{
}
class IHaveNullFields
{
string @string = null;
StringBuilder @StringBuilder = null;
}
class Program
{
static void Main(string[] args)
{
IHaveNothing nothing = new IHaveNothing();
IHaveNullFields nullFields = new IHaveNullFields();
}
}
Run Code Online (Sandbox Code Playgroud)
实例nullFields比实例没有消耗更多的内存吗?
编辑:如果null局部变量而不是类'null字段,它们也消耗内存吗?
变量定义为存储位置.所以问题是:存储位置消耗内存吗?
当你这样说时,听起来很明显答案是肯定的.除了消耗内存之外,存储位置还能做什么?
它并不那么简单.局部变量根本不会消耗内存; 本地变量可能由抖动注册.在这种情况下,它既不会消耗堆栈也不会消耗堆内存.
你为什么在乎?CLR管理内存以为变量创建存储位置的方式是实现细节.除非您编写不安全的代码,否则您不必担心它.
| 归档时间: |
|
| 查看次数: |
1524 次 |
| 最近记录: |