在c#中是否真的需要构造函数或析构函数?

use*_*312 4 c# constructor destructor

你能否告诉我c#中的构造函数是否需要可用于设置默认值的属性?

再次,是否需要将语言垃圾收集的析构函数?

请给我一些实际的例子.

Mar*_*ell 5

构造函数对于初始化不可变数据至关重要.它们还有助于声明IoC/DI期望/需求.对于配置对象所需的最小数据集的场景,尽早请求它是很有用的 - 这通常意味着构造函数.

析构函数/终结器通常用于释放非托管资源 - 例如OS句柄,或来自非托管区域的内存(Marshal.AllocHGlobal).这些资源不是垃圾收集的,因此必须小心手动释放它们 - 否则会发生泄漏,或者您使有限的池饱和.这些示例在应用程序代码中非常罕见,除了IDisposable- 当它没有正确处理时,它几乎总是用作后备.