首页 > 解决方案 > 在代码中间解释使用 C# 代码中的语句...(不在标题中作为加载库)

问题描述

请,任何人都可以向我解释c#“使用”中的声明。我知道我在程序头使用它来加载基本库,例如使用 System.Text;。但我不清楚,有什么区别:

using (var font1 = new Font("Arial", 10.0f)) 
{
    byte charset = font1.GdiCharSet;
}

和:

using var font1 = new Font("Arial", 10.0f);
byte charset = font1.GdiCharSet;

是的,我阅读了 C# 的手册,但实际上我并不理解这一点。

标签: c#using

解决方案


usingIDisposable与实现接口的类型一起使用。

它确保当对象超出范围时,Dispose调用该方法(如 中所定义IDisposable)并且通常用于处置非托管资源。

您的第一个示例是传统的 using 块,其中对象范围由以下 {} 定义。

您的第二个是在 C#8 中引入的新 using 语句,其中范围是封闭块,与其他局部变量一样。

它大致相当于:

var font1 = new Font("Arial", 10.0f);
byte charset = font1.GdiCharSet;
font1.Dispose();

但正如凯西所指出的,它实际上确保了对象被处置,即使在块内抛出异常,即

var font1 = new Font("Arial", 10.0f);
try
{
    byte charset = font1.GdiCharSet;
}
finally
{
    if (font1 != null)
    {
        font1.Dispose();
    }
}

推荐阅读