Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 当一个类有多个成员时如何实现Dispose_.net_Vb.net_Idisposable - Fatal编程技术网

.net 当一个类有多个成员时如何实现Dispose

.net 当一个类有多个成员时如何实现Dispose,.net,vb.net,idisposable,.net,Vb.net,Idisposable,如何实现dispose类,该类将对象作为成员,但不实现IDisposable 请参考下面的示例了解我的意思: Public Class MyClass Implements IDisposable private emp as EmpClass private dept as DeptClass ' EmpClass and DeptClass doesn't implemented IDisposable interface. ' IDispos

如何实现dispose类,该类将对象作为成员,但不实现IDisposable

请参考下面的示例了解我的意思:

Public Class MyClass
    Implements IDisposable

    private emp as EmpClass
    private dept as DeptClass

    ' EmpClass and DeptClass doesn't implemented IDisposable interface. 

    ' IDisposable
    Protected Overridable Sub Dispose(disposing As Boolean)
       If Not Me.disposedValue Then
          If disposing Then
            emp = Nothing  ' --> Can't call Dispose method so I set to null
            dept = Nothing ' --> Can't call Dispose method so I set to null
          End If
       End If
      Me.disposedValue = True
    End Sub
End Class
从上面看,所有都是托管对象,我可以进行必要的更新。所以请建议代码是否正确

已编辑

当我试图创建MyClass的实例时,编译器给了我一个必须实现IDisposable的错误。下面是我的电话号码

Using ctx = MyFactory.CreateMyClass()
     'DO Something
End Using
发件人:

此接口的主要用途是释放非托管资源。 垃圾回收器会自动释放分配给 当不再使用托管对象时。然而,事实并非如此 可以预测垃圾回收何时发生。此外,, 垃圾收集器不知道非托管资源,例如 窗口句柄,或打开文件和流

因此,如果您的类不使用流、文件或非托管对象,则无需调用Dispose或实现IDisposable。 dispose中的另一项功能是从以下位置删除不再需要的侦听器:

此接口的主要用途是释放非托管资源。 垃圾回收器会自动释放分配给 当不再使用托管对象时。然而,事实并非如此 可以预测垃圾回收何时发生。此外,, 垃圾收集器不知道非托管资源,例如 窗口句柄,或打开文件和流

因此,如果您的类不使用流、文件或非托管对象,则无需调用Dispose或实现IDisposable。
dispose中的另一件事是删除不再需要的侦听器

问题是:为什么要实现
IDisposable
?好问题,我在上面附加了我的实际问题来回答您的问题。后续问题:为什么要将类与
Using
语句一起使用?首先,我曾想限制这个使用语句编写的实例的范围,然后开始编写代码来解决问题(比如IDisposable)。但看起来我不需要在这里使用语句,现在所有问题都解决了。然而,我脑子里有一个任务悬而未决,为什么我不能使用Using..也许你认为我想使用
Using
语句,所以我实现
IDisposable
而不是实现
IDisposable
,所以我应该使用
Using
语句。或者,类的使用有一个有限的、特定的范围,您希望在这个范围的末尾发生一些事情?我经常看到的一个常见用例是,一个类在其构造函数中将游标更改为WaitCursor,然后在
Dispose
方法中将其更改回上一个游标。这允许使用新的WaitCursor()进行
操作。。。等待光标显示时发生的事情…
。问题是:为什么要实现
IDisposable
?好问题,我在上面附加了我的实际问题来回答您的问题。后续问题:为什么要将类与
Using
语句一起使用?好的,首先,我曾想限制这个使用语句编写的实例的范围,然后开始编写代码来解决问题(比如IDisposable)。但看起来我不需要在这里使用语句,现在所有问题都解决了。然而,我脑子里有一个任务悬而未决,为什么我不能使用Using..也许你认为我想使用
Using
语句,所以我实现
IDisposable
而不是实现
IDisposable
,所以我应该使用
Using
语句。或者,类的使用有一个有限的、特定的范围,您希望在这个范围的末尾发生一些事情?我经常看到的一个常见用例是,一个类在其构造函数中将游标更改为WaitCursor,然后在
Dispose
方法中将其更改回上一个游标。这允许使用新的WaitCursor()进行
操作。。。等待光标显示时发生的内容…