有没有办法让"using"语句在嵌套之前终止?

isp*_*iro 0 c# using-statement

当一个字段用于创建另一个字段,然后处理 - 我看到两个选项.第一:

Image image = Image.FromFile(path);
Bitmap bitmap = (Bitmap)image.GetThumbnailImage(32, 32, null, new IntPtr());
image.Dispose();//not needed anymore.

//use bitmap

bitmap.Dispose();
Run Code Online (Sandbox Code Playgroud)

第二:

using (Image image = Image.FromFile(path))
{
    using (Bitmap bitmap = (Bitmap)image.GetThumbnailImage(32, 32, null, new IntPtr()))
    {
        //use bitmap
    }
}
Run Code Online (Sandbox Code Playgroud)

逻辑1将是第一个(因为在使用Image时不需要Bitmap),但using语句通常优先于Dispose.

还有第三种方法 - using在第二种方式中终止第一种方式吗?

Dan*_*rth 7

是的,有:将代码生成缩略图形成方法:

Bitmap GetThumbnail(string path)
{
    using (Image image = Image.FromFile(path))
    {
        return (Bitmap)image.GetThumbnailImage(32, 32, null, new IntPtr());
    }
}

// ...

using (Bitmap bitmap = GetThumbnail(path))
{
    //use bitmap
}
Run Code Online (Sandbox Code Playgroud)

请注意:
我同意Oded的评论.我会使用这段代码不是因为它image首先处理,而是因为它更具可读性.