gpt4 book ai didi

c# - 如果一个成员是 IDisposable,我们应该实现 IDisposable 吗?

转载 作者:太空狗 更新时间:2023-10-30 00:34:29 27 4
gpt4 key购买 nike

我是这么认为的。但是请看一下 ASP.NET 中的内置类:

public sealed class HttpPostedFile
{
public Stream InputStream { get; } // Stream implements IDisposable
// other properties and methods
}

假设我有一个 HttpPostedFile 的实例称为 file .因为没有 Dispose显式调用的方法,file.InputStream.Dispose()在它被破坏之前不会被调用,我认为这违背了IDisposable的初衷.我认为正确的实现应该包含一个标准 IDisposable执行。所以,如果其中一个成员实现了 IDisposable ,类也需要实现它。

你有什么看法?好像有点复杂。

最佳答案

一般来说,如果您拥有该属性所代表的资源,您应该实现IDisposable - 参见this question for a discussion on this subject .

我会说,因为 HttpPostedFile 是在处理 HTTP 请求期间实例化的,它不拥有流,因此不会释放它。当 HTTP 请求处理完成时,流将被释放。

关于c# - 如果一个成员是 IDisposable,我们应该实现 IDisposable 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7467373/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com