C#:以分配的逆序排列资源是否有优势?

Bob*_*man 5 c# resources dispose fragmentation

许多年前,我被告诫,尽可能以相反的顺序释放资源以分配资源.那是:

block1 = malloc( ... );
block2 = malloc( ... );

... do stuff ...

free( block2 );
free( block1 );
Run Code Online (Sandbox Code Playgroud)

我想在640K MS-DOS机器上,这可以最小化堆碎片.在C#/ .NET应用程序中执行此操作是否有任何实际优势,或者这种习惯是否已经超过其相关性?

Ree*_*sey 5

如果您的资源创建得很好,这应该不重要(很多).

但是,许多创建不良的库不能进行适当的检查.以与其分配相反的方式处置资源通常意味着您首先处理依赖于其他资源的资源 - 这可以防止写得不好的库导致问题.(你永远不会丢弃一个资源,然后在这种情况下使用一个依赖于第一个资源的资源.)

这也是一种很好的做法,因为你不会过早意外地处理某些其他对象所需的资源.

这是一个例子:查看数据库操作.在关闭/处理命令(使用连接)之前,您不希望关闭/处置连接.