2016-06-29 25 views
2

我目前使用NDA库(非商业),其文档为零并使用EMGU。 这里是我的问题一个例子:我必须在C#中配置一个参数吗?

public void example() 
{ 
    Image<Gray,byte> exp = new Image<Gray,byte>(128,128); 
    foo(exp); 
    exp.Dispose(); 
} 

public bool foo(Image<Gray,byte> bar) 
{ 
    //magic here 
    //bar.Dispose() ?? 
    return true; 
} 

当我传递一个EMGU-图像从一个功能到另一个,我一定要打电话.Dispose()在调用函数吗?或者在被调用者中调用它是否足够?

+1

好问题,但它已经被回答了很长时间。标准的经验法则是,如果你创建*它,你负责*处置它(除非有一致同意的所有权转让)。有关更多详细信息,请查看参数如何传递。像这样的对象是通过C#中的引用传递的,所以你没有制作对象的副本。 –

+0

还要注意,即使引发异常,也应该使用'using'关键字来确保调用exp.Dispose()。 –

+0

@CodyGray哦,快点!但我发誓我多次使用搜索。但也许我只是无法用正确的词来搜索它。感谢您的回答(评论)和链接! –

回答

0

最好只拨打Dispose()一次。但是,如果方法是以“正常方式”编写的,则可以多次调用该方法。

相关问题