gpt4 book ai didi

c# - 包含返回一次性对象的方法的类是否需要实现 IDisposable?

转载 作者:太空宇宙 更新时间:2023-11-03 17:29:48 24 4
gpt4 key购买 nike

我知道,作为一项规则,我们应该在包含一次性对象(字段或属性)实例的类型上实现 IDisposable。现在,这是否也适用于包含返回一次性对象的方法的类?

现实生活中的例子:

class MyClass
{
public Image GetImage()
{
using (var stream = new MemoryStream(byteArray))
using (var img = Image.FromStream(stream))
{
return new Bitmap(img);
}
}
}

如果答案是否定的,那么前面的代码和下面的代码有什么区别?

只读属性而不是方法:

class MyClass
{
public Image Image
{
get
{
using (var stream = new MemoryStream(byteArray))
using (var img = Image.FromStream(stream))
{
return new Bitmap(img);
}
}
}
}

最佳答案

Now, does that also apply to classes containing methods that return a disposable object?

不,类不负责返回给调用者的任何内容。调用者必须正确处置获得的资源。

也就是说,您的第二个示例与第一个示例基本相同。该属性没有支持字段,因此该类不存储对返回值的引用。事实上,编译器最终会创建一个名为 get_Image() 的方法,它与第一个示例相同。

关于c# - 包含返回一次性对象的方法的类是否需要实现 IDisposable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49821726/

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