c# - A a =new A() 和 A a=null 的区别

标签 c# heap-memory

在 C# 中,

A a = new A();
A a = null;
A a;

这 3 条线在内存方面是如何工作的?

我知道第一行会在堆中创建内存,但是剩下的两行呢?

它是如何工作的,如果, 一个; 是一个字段和局部变量。

最佳答案

  1. 创建 A 的新实例并将其分配给变量 a
  2. 什么都不做。它只是将 null 分配给引用 a。如果未使用 a,编译器可能会将其优化掉。
  3. 也什么都不做。它将恢复为 A a = default(A);,这与 2 相同,因为 default(A)null。对于方法变量,如果您不分配它,它将向您显示警告或错误。如果不使用,也可以优化掉这个。

关于c# - A a =new A() 和 A a=null 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33732720/

相关文章:

c# - 最佳实践 Observablecollection<Model> 与 Observablecollection<ViewModel>

c# - NUnit:如何从非静态方法传递 TestCaseData?

c# - 未调用构造函数

汇编:无需 malloc 和系统调用的动态内存分配? [FreeDOS应用程序]

python - 总分配超过堆内存的 95.00%(960,285,889 字节)- pyspark 错误

c# - 自定义类 ASP.Net 5 MVC 6 中的应用程序设置

c# - Gmap.Net 标记在不正确的位置,但本地图缩放时,标记会转到正确的位置

java - 如何在 Windows 上增加 Tomcat 堆内存

c++ - 如何防止在堆上创建对象?

c - 内存分配 **p