你应该在方法中配置一个新的对象参数吗?

时间:2015-05-16 18:54:10

标签: .net vb.net winforms

以下方法将位图的克隆分配给类中的本地位图变量。第二个参数告诉我们在赋值后是否处理源位图,这是为了方便。

Public Sub setBitmap(ByRef SourceBitmap As Bitmap, DisposeSource As Boolean)
uBitmap = SourceBitmap.Clone
If DisposeSource AndAlso SourceBitmap IsNot Nothing Then
  SourceBitmap.Dispose()
  SourceBitmap = Nothing
  end if
End Sub

如果源位图是新的位图,那么它应该被丢弃吗?换句话说,在这个例子中第二个参数应该是True还是False?

mView.setBitmap(New Bitmap(2000, 2000, pFormat), False)

从另一个函数返回新位图的时间怎么样?

rview.setBitmap(readThumbnail(...), False)

2 个答案:

答案 0 :(得分:5)

处理来电者的对象通常是不好的形式。就个人而言,我会完全删除该功能。这样会更正确:

using newBitmap As New Bitmap(2000, 2000, pFormat)
    mView.setBitmap(newBitmap)
end using

答案 1 :(得分:2)

在调用中创建新位图时,应该让方法处理它:

mView.setBitmap(New Bitmap(2000, 2000, pFormat), True)

您创建的每个一次性对象都应该被处理掉,并且由于您没有对其进行引用,因此唯一的处理方法就是让方法执行此操作。

如果使用方法创建位图,也是如此。如果你没有保留对它的引用以便你可以处理它,那么方法必须这样做。

如果你创建一个位图并保留对它的引用以便以后可以处理它,你可以发送False作为第二个参数:

Dim img As New Bitmap(2000, 2000, pFormat)
mView.setBitmap(img, False)
' ...
img.Dispose()

通常,您会使用发送False作为第二个参数的表单。如果创建对象的级别也负责处理它,则更容易遵循代码。确保其正常工作的代码也可以更简单地编写(例如使用Using关键字来确保处理对象。)

相关问题