何时何地实例化和处置类的一次性财产?

时间:2014-10-29 07:03:37

标签: c# fonts idisposable

我知道Font类实现IDisposable接口,应该显式处理或使用using子句

我有一个类,我希望它有一个Font属性

class Test 
{ 
    Font Font {set; get;}  
    public Test()
    {
        Font = new Font("Arial", 16, FontStyle.Bold);                   
    }
}

我担心在删除类的对象时,在我应该实例化和处理它的时间和地点处理它?<​​/ p>

2 个答案:

答案 0 :(得分:1)

在封装应该处理的对象时,通常建议使用IDisposable模式:

class Test : IDisposable
{ 
    public Font Font { get; set; }  

    public Test()
    {
        Font = new Font("Arial", 16, FontStyle.Bold);                   
    }

    public void Dispose()
    {
        Dispose(true);
    }

    protected virtual void Dispose(bool disposing)
    {
        if (disposing)
        {
            Font.Dispose();
        }
    }
}

这样,您就可以在班级中使用Font班级,并且只有在使用Test班级后才能处理它:

using (Test test = new Test())
{
   // Do stuff with test.
}

答案 1 :(得分:-1)

class Test 
{ 
    Font Font {set; get;}  
    public Test()
    {
        using (var font = new Font("Arial", 16, FontStyle.Bold))
        {
            // do something with font here
        } // font is automatically disposed when going out of scope

    }
}

使用语句的重点在于在本地执行某些操作而无需显式处理对象。

因此,它并不适用于您的情况,您希望以某种方式使用&#39;使用&#39;运算符在Test类的所有成员函数中