方法C#

方法C#,c#,dispose,filestream,C#,Dispose,Filestream,在C#2010(.Net 4)中,有没有一种不使用try finally块来处理方法变量的方法 故事: 我有几个文件处理程序方法。每个处理程序(方法)可以在执行中间中止。 我喜欢在退出方法之前处理所有方法的对象。 为每个处理程序编写dispose方法的选项不是选项 多谢各位 这表明了总体思路: `公共静态类比较 { 私有静态布尔比较MLS(…) { //根据4个条件,在3个出口点中放置7个物体 //General method flow: //1. init p

在C#2010(.Net 4)中,有没有一种不使用try finally块来处理方法变量的方法

故事: 我有几个文件处理程序方法。每个处理程序(方法)可以在执行中间中止。 我喜欢在退出方法之前处理所有方法的对象。 为每个处理程序编写dispose方法的选项不是选项

多谢各位

这表明了总体思路: `公共静态类比较 { 私有静态布尔比较MLS(…) { //根据4个条件,在3个出口点中放置7个物体

        //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
    }
}`
//通用方法流程:
//1.初始化对象的一部分
//2.如果(!)
//处置对象
//退出方法
//3.执行一些操作
//4.初始化其他一些对象
//2.如果(!)
//处置对象
//退出方法
//等等。。。
}
私有静态布尔比较PGS(…)
{
//根据4个条件,在10个出口点中放置12个物体
}
私有静态布尔比较映射(…)
{
//根据4个条件,在3个出口点中放置5个物体
}
私有静态bool CompareTxts(…)
{
//根据4个条件,在10个出口点中放置12个物体
}
}`

我还有另外7种比较方法

我会将该方法放在一个impiment对象上,并使用在finally块中调用this.dispose()?有关如何使用和为什么使用的完整说明,请参阅此处。一个样本是

using (MyDisposableType disposable1 = GetDisposable1(), disposable2 = GetDisposable2() /*,...*/)
{
    //your actions
}
using
块退出后,将处理在其头中声明的所有一次性对象

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

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

为什么它不是一个选项?请提供一个示例,它是一个你称之为方法的类吗?如果你能在这里放一些代码就好了,否则有太多的方法来抽象处理句柄…是的,你必须创建一些抽象来这样做,它不会自动完成。你说的“中止”是什么意思?Oded-这不是一个选项,因为我有太多的方法,每个方法都有完全不同的对象。更正,所有IDisposable实现对象都将调用其.Dispose()方法。在其他情况下非常有用,而不仅仅是资源释放。=)对,这更准确:)但是不可IDisposable对象呢?如果可能的话,让它们
IDisposable
。如果没有,则将它们收集到
IDisposable
类中,该类在
Dispose
中处理这些对象,并在方法中使用这个新类。可能,您将能够提出一个或一小部分这样的类,这些类将满足您所有不同方法的需要。一般来说,您所说的处理不可
IDisposable
的东西是什么意思?这是一条规则,如果类的对象在销毁时可能需要额外的清理(GC作业不够),那么该类应该实现
IDisposable
。你的问题让我觉得这个规则在你的设计中被打破了。Microsoft和可靠的第三方库不会违反此规则,因此我认为您可以控制您的类,因此可以使它们
IDisposable
。我不想使用try finally block。