为什么消息框显示"False"?
Dim images(4, 4) As Image
For rows = 0 To 4
For columns = 0 To 4
images(rows, columns) = My.Resources.kaboom
Next
Next
MessageBox.Show(images(3, 3).Equals(My.Resources.kaboom))发布于 2018-10-18 20:59:44
如果您查看kaboom属性背后的代码,您将看到它每次都会创建一个新对象。
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property kaboom() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("kaboom", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property如果保持对一个对象的引用,它将等于true。它也可能更快,因为它不需要创建新的对象。
Dim kaboom As Image = My.Resources.kaboom
Dim images(4, 4) As Image
For rows = 0 To 4
For columns = 0 To 4
images(rows, columns) = kaboom
Next
Next
MessageBox.Show(images(3, 3).Equals(kaboom))也许你已经计划这样做了,但这里有一个建议。如果您正在创建某种类型的游戏,请将显示与游戏逻辑分开。这意味着,保存磁贴的类型,而不是图像,并进行比较。稍后,您可以向平铺添加一组不同的属性。
Const TYPE_KABOOM As Integer = 1
Dim tileType(4, 4) As Integer
For rows = 0 To 4
For columns = 0 To 4
tileType(rows, columns) = TYPE_KABOOM
Next
Next
MessageBox.Show(tileType(3, 3).Equals(TYPE_KABOOM))https://stackoverflow.com/questions/52866943
复制相似问题