В настоящее время я использую 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()
в вызываемой функции, тоже? Или достаточно назвать это в вызываемой?
Хороший вопрос, но на это уже был дан ответ. Стандартное эмпирическое правило состоит в том, что если вы * создаете * это, вы несете ответственность за * распоряжение * его (если не существует согласованной передачи права собственности). Для получения дополнительной информации также посмотрите, как передаются параметры. Такие объекты передаются по ссылке в C#, поэтому вы не делаете копию объекта. –
Обратите внимание, что вы должны использовать ключевое слово 'use', чтобы гарантировать, что вызывается функция exp.Dispose(), даже если выбрано исключение. –
@CodyGray oh snap! Но я клянусь, что использовал поиск несколько раз. Но, может быть, я просто не смог найти подходящие слова. Спасибо за ваш ответ (комментарий) и ссылку! –