提问人:Mufasatheking 提问时间:6/19/2023 最后编辑:Dmitry BychenkoMufasatheking 更新时间:6/19/2023 访问量:101
c# 类解构函数是否从内存中删除/销毁类?
Do c# class deconstructors delete/destroy the class from memory?
问:
我正在阅读有关 c# 10 的信息并阅读
“解构器(也称为解构方法)充当近似值 与构造函数相反:而构造函数通常采用一组值(如 参数)并将它们分配给字段,解构器执行相反的操作并分配 字段回到一组变量。
我知道这可以用来获取类中的一堆成员值,但它对类的生命周期有什么作用吗?就像它是否强制删除对它的所有引用并对其进行垃圾回收,或者它只是返回值?
答:
5赞
Dmitry Bychenko
6/19/2023
#1
Deconstructor 与 Destructor 不同(c# 根本没有它们)对内存分配不做任何事情;解构器只是
一个句法糖,它通常分配参数,仅此而已,例如out
public class MyClass {
public MyClass(int a, int b, int c) {
A = a;
B = b;
C = c;
}
public int A { get; }
public int B { get; }
public int C { get; }
// Deconstructor does nothing but assigns out parameters
public void Deconstruct(out int a, out int b, out int c) {
a = A;
b = B;
c = C;
}
}
然后你可以把
MyClass test = new MyClass(1, 2, 3);
...
// Deconstructor makes code easier to read
(int a, int b, int c) = test;
而不是
MyClass test = new MyClass(1, 2, 3);
...
int a = test.A;
int b = test.B;
int c = test.C;
评论