草庐IT

Destructor

全部标签

c# - 为什么结构不能有析构函数?

您认为这样的问题在面试中最好的答案是什么?我想在这里找不到此副本,如果有副本,请链接它。 最佳答案 另一种看待这种情况的方法-而不是仅仅引用说明结构不能/没有析构函数的规范-考虑如果规范被更改以使它们发生了,会发生什么?或者,让我们问一个问题:可以我们猜想语言设计者为什么决定首先不允许结构具有“析构函数”?(这里不要挂断词“析构函数”;我们基本上是在讨论结构上的魔术方法,当变量超出范围时会自动调用该方法。换句话说,一种类似于C++析构函数的语言功能。)首先要意识到的是,我们不关心释放内存。无论对象是在堆栈上还是在堆上(例如,类中的结

c# - 为什么结构不能有析构函数?

您认为这样的问题在面试中最好的答案是什么?我想在这里找不到此副本,如果有副本,请链接它。 最佳答案 另一种看待这种情况的方法-而不是仅仅引用说明结构不能/没有析构函数的规范-考虑如果规范被更改以使它们发生了,会发生什么?或者,让我们问一个问题:可以我们猜想语言设计者为什么决定首先不允许结构具有“析构函数”?(这里不要挂断词“析构函数”;我们基本上是在讨论结构上的魔术方法,当变量超出范围时会自动调用该方法。换句话说,一种类似于C++析构函数的语言功能。)首先要意识到的是,我们不关心释放内存。无论对象是在堆栈上还是在堆上(例如,类中的结

c# - 手动销毁 C# 对象

我刚开始学习C#(来自Java和C++背景),我有一个关于手动垃圾处理的问题:是否有可能在C#中手动销毁对象?我知道IDisposable接口(interface),但假设我正在处理一个我没有编写并且没有实现它的类?它不会有.Dispose()方法,所以using{}已经过时了,.Finalize总是protected或private所以这也不是一个选项。(在这种情况下,我只是想了解C#中的可能。我想如果所有其他方法都失败了,我可以继承假设的ImNotDisposable类,以便它确实实现IDisposable。) 最佳答案 您无需

c# - 手动销毁 C# 对象

我刚开始学习C#(来自Java和C++背景),我有一个关于手动垃圾处理的问题:是否有可能在C#中手动销毁对象?我知道IDisposable接口(interface),但假设我正在处理一个我没有编写并且没有实现它的类?它不会有.Dispose()方法,所以using{}已经过时了,.Finalize总是protected或private所以这也不是一个选项。(在这种情况下,我只是想了解C#中的可能。我想如果所有其他方法都失败了,我可以继承假设的ImNotDisposable类,以便它确实实现IDisposable。) 最佳答案 您无需

c# - 静态终结器

执行某些静态终结的正确方法是什么?没有静态析构函数。AppDomain.DomainUnload事件不会在默认域中引发。AppDomain.ProcessExit事件在所有事件处理程序之间共享三秒的总时间(默认设置),因此它并不是真正可用的。 最佳答案 HerfriedWagnerhaswrittenanexcellentarticleexplaininghowtoimplementthis–alas,inGerman(andVB).Still,thecodeshouldbeunderstandable.我试过了:staticrea

c# - 静态终结器

执行某些静态终结的正确方法是什么?没有静态析构函数。AppDomain.DomainUnload事件不会在默认域中引发。AppDomain.ProcessExit事件在所有事件处理程序之间共享三秒的总时间(默认设置),因此它并不是真正可用的。 最佳答案 HerfriedWagnerhaswrittenanexcellentarticleexplaininghowtoimplementthis–alas,inGerman(andVB).Still,thecodeshouldbeunderstandable.我试过了:staticrea

c# - 析构函数、处理方法和终结方法之间的区别

我正在研究垃圾收集器在C#中的工作原理。我对Destructor、Dispose和Finalize方法的使用感到困惑。根据我的研究和理解,在我的类中有一个Destructor方法将告诉垃圾收集器以不能在类的实例上显式调用的析构方法中提到的方式执行垃圾收集。Dispose方法旨在让用户控制垃圾收集。Finalize方法释放类使用的资源,但不释放对象本身。我不确定我是否理解正确。请解惑。欢迎任何进一步的链接或指南。 最佳答案 析构函数隐式调用Finalize方法,它们在技术上是相同的。Dispose可用于实现IDisposable接口(

c# - 析构函数、处理方法和终结方法之间的区别

我正在研究垃圾收集器在C#中的工作原理。我对Destructor、Dispose和Finalize方法的使用感到困惑。根据我的研究和理解,在我的类中有一个Destructor方法将告诉垃圾收集器以不能在类的实例上显式调用的析构方法中提到的方式执行垃圾收集。Dispose方法旨在让用户控制垃圾收集。Finalize方法释放类使用的资源,但不释放对象本身。我不确定我是否理解正确。请解惑。欢迎任何进一步的链接或指南。 最佳答案 析构函数隐式调用Finalize方法,它们在技术上是相同的。Dispose可用于实现IDisposable接口(

c# - 在 C# 中使用 IDisposable 与析构函数有什么区别?

我什么时候会在类而不是析构函数上实现IDispose?我读了thisarticle,但我仍然没有捕获要点。我的假设是,如果我在一个对象上实现IDispose,我可以明确地“破坏”它,而不是等待垃圾收集器来完成它。这是正确的吗?这是否意味着我应该始终在对象上显式调用Dispose?这有哪些常见的例子? 最佳答案 终结器(也称为析构函数)是垃圾收集(GC)的一部分-它何时(或什至是否)发生是不确定的,因为GC主要是由于内存压力(即需要更多空间)而发生的。终结器通常仅用于清理非托管资源,因为托管资源将有自己的收集/处置。因此,IDispo

c# - 在 C# 中使用 IDisposable 与析构函数有什么区别?

我什么时候会在类而不是析构函数上实现IDispose?我读了thisarticle,但我仍然没有捕获要点。我的假设是,如果我在一个对象上实现IDispose,我可以明确地“破坏”它,而不是等待垃圾收集器来完成它。这是正确的吗?这是否意味着我应该始终在对象上显式调用Dispose?这有哪些常见的例子? 最佳答案 终结器(也称为析构函数)是垃圾收集(GC)的一部分-它何时(或什至是否)发生是不确定的,因为GC主要是由于内存压力(即需要更多空间)而发生的。终结器通常仅用于清理非托管资源,因为托管资源将有自己的收集/处置。因此,IDispo