我正在实施IDataReader
,我想知道是否Dispose
应该调用Close
。
另外,应该Close
打电话Dispose
吗?
我的猜测是不Close
应该调用Dispose
并且Dispose
可以调用Close
,因为 AFAIK 你应该能够Dispose
在任何对象中调用任意多次。但这只是一个猜测,我宁愿听听专家的意见。
我正在实施IDataReader
,我想知道是否Dispose
应该调用Close
。
另外,应该Close
打电话Dispose
吗?
我的猜测是不Close
应该调用Dispose
并且Dispose
可以调用Close
,因为 AFAIK 你应该能够Dispose
在任何对象中调用任意多次。但这只是一个猜测,我宁愿听听专家的意见。
Close()
并且Dispose()
应该做同样的事情(一个应该打电话给另一个)。
但是,Close()
不需要多次调用。
您应该继承基DbDataReader
类,而不是自己重新实现整个事物;如果是这样,您将需要覆盖 abstract Close()
。
.Dispose()
应该只做一件事:释放非托管资源。因此,.Close()
当且仅当调用该函数是释放非托管资源的正确方法时,您才应该调用。在这种情况下,我会说这是真的(它将释放数据库连接),因此您应该调用该函数。
它们几乎是一样的,除了 Close 可以被调用超过 1 次而不会出现异常。
如果多次使用该对象,则执行 .Close,如果仅使用一次,则执行 .Dispose()。
IDataReader
在界面中。它并不规定实施。