析构函数或解构函数?

19 oop terminology

在我的日常生活中,在阅读书籍的过程中,我看到过析构函数和解构函数.

但是这个方法的正确名称是什么?

Sar*_*raz 20

当对象即将死亡时,它是用于清理东西的析构函数.如果要在移除/死亡对象时指定它,则会自动调用它.

更多信息:

http://en.wikipedia.org/wiki/Destructor_%28computer_science%29


Ral*_*lph 9

析构函数,如果您正在引用OOP.解构者在谈论 魔兽世界时 ;-).


Tim*_*ann 7

正如其他人已经解释的那样, adestructor用于清理对象。

\n\n

C# 7 中有一个新特性,可以称为deconstructor

\n\n
class Person\n{\n    public string FirstName { get; set; }\n    public string LastName { get; set; }\n\n    public void Deconstruct(out string firstName, out string lastName)\n    {\n        firstName = FirstName;\n        lastName = LastName;\n    }\n}\n\nvar person = new Person { FirstName = "John", LastName = "Smith" };\nvar (localFirstName, localLastName) = person;\n
Run Code Online (Sandbox Code Playgroud)\n\n

此功能更常见的名称是deconstruct method或,但我在官方 msdn 博客deconstruction上发现至少有一个实例将其称为(强调我的):deconstructor

\n\n
\n

以这种方式将构造函数和解构函数设置为 \xe2\x80\x9csymmetry\xe2\x80\x9d将是一种常见的模式。

\n
\n

  • 这种术语似乎也是特定于语言的。例如,在 ES6 JavaScript 中[它被称为“解构”](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment)。 (3认同)

Pon*_*gge 5

析构函数是最常用的术语(析构函数听起来像本地用法:我喜欢它,因为它指出了与构造函数的对称性)。

但是这些事情在某种程度上是特定于语言的,因为不同的OO语言人员对于实例的生命周期具有不同的模型。以C#为例,在这里有终结器而不是析构函数终结器的执行保证较弱,并由提供确定性的语言支持模式进行补充Dispose()