方法配置功能C#

时间:2011-07-13 08:38:09

标签: c# dispose filestream

有没有办法在不使用C#2010(.Net 4)中的try-finally块的情况下处理方法变量?

故事: 我有几个文件处理程序方法。每个处理程序(方法)都可以在执行过程中中止。 我想在退出方法之前处理所有方法的对象。 为每个处理程序组合dispose方法的选项不是一个选项。

谢谢

这证明了一般的想法: `public static class Comparison     {         private static bool CompareXmls(...)         {             //有7个对象放置在3个出口点,符合4个条件

        //General method flow:

        //1. init part of the object

        //2. if(!<condition1>)
                //disposed objects
                //exit method

        //3. perform some actions

        //4. init some of the other objects

        //2. if(!<condition2>)
                //disposed objects
                //exit method

        //and so on...
    }

    private static bool CompareJpgs(...)
    {
        //has 12 object to be disposed in 10 exit points acordding to 4 conditions
    }

    private static bool CompareBitMaps(...)
    {
        //has 5 object to be disposed in 3 exit points acordding to 4 conditions
    }

    private static bool CompareTxts(...)
    {
        //has 12 object to be disposed in 10 exit points acordding to 4 conditions
    }
}`

我有另外7种比较方法

2 个答案:

答案 0 :(得分:1)

using?有关如何以及为何使用http://msdn.microsoft.com/en-us/library/yh598w02(v=VS.100).aspx的完整说明,请参阅此处。样本将是

using (MyDisposableType disposable1 = GetDisposable1(), disposable2 = GetDisposable2() /*,...*/)
{
    //your actions
}

退出using块后,其标题中声明的所有一次性对象都将被丢弃。

如果您的一次性对象属于不同类型,则可以使用嵌套的using s:

using (MyDisposableType1 disposable1 = GetDisposable1())
{
    using (MyDisposableType2 disposable2 = GetDisposable2())
    {
        //more usings if needed, and then your actions
    }
}

答案 1 :(得分:0)

我会将该方法放在一个隐藏idisposible的对象上,并在finally块中调用this.dispose()