gpt4 book ai didi

c# - 显式转换为 IDisposable

转载 作者:行者123 更新时间:2023-12-02 18:05:55 24 4
gpt4 key购买 nike

我正在使用一些 XmlReaderXmlWriter 对象对某些 try...catch block 内的字符串执行一些所需的工作。

我知道使用符号 using (XmlReader NewReader = XmlReader.Create(...)) 是首选语法,但我不太喜欢这样,所以我还附加了 finally 阻塞并执行 NewReader.Close();NewWriter.Close();

但是,代码分析提示这些对象没有被释放,从而迫使我以某种方式调用Dispose()方法。

问题是,在这些类中,Dispose() 方法是显式实现的,因此我必须使用 ((IDisposable)(NewReader)).Dispose();((IDisposable)(NewWriter)).Dispose();

这种技术有什么缺点吗?

最佳答案

不使用using有充分的理由:

  • 当对象的生命周期可能需要比当前 block 的生存时间更长时

并且有很糟糕的理由避免使用:

  • “我不太喜欢这样”

这个充分的理由适用于您的代码吗?

还请注意,简单的扩展方法将使语法再次变得漂亮和干净。

关于c# - 显式转换为 IDisposable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6556941/

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