代码之家  ›  专栏  ›  技术社区  ›  Todd Main

课堂活动

  •  0
  • Todd Main  · 技术社区  · 14 年前

    例如,在这一个我总是想保持 myColor 任何或所有 Red , Green Blue

    Class myColors
        Private Property Red As Byte
        Private Property Green As Byte
        Private Property Blue As Byte
        Private Property myColor As Color
        Sub New()
            myColor = Color.FromArgb(0, 0, 0)
        End Sub
        Sub ChangeRed(ByVal r As Byte)
            Red = r
            myColor = Color.FromArgb(Red, Green, Blue)
        End Sub
        Sub ChangeBlue(ByVal b As Byte)
            Blue = b
            myColor = Color.FromArgb(Red, Green, Blue)
        End Sub
    End Class
    

    如果其中一个或多个更改,我希望 霉色 myColor = Color.FromArgb(Red, Green, Blue) 在每个子程序中?

    3 回复  |  直到 14 年前
        1
  •  2
  •   Bob Fincheimer    14 年前

    在你的情况下,事件是没有用的。

    事件被用作其他人的代码对您的代码执行操作的方式。您可以创建一个事件,这样您就可以告诉世界您的代码正在做的事情。您可以为颜色更改创建一个事件,您可以在每次以某种方式更改颜色时引发该事件,但这并不是为了您的利益,只会被使用您的类并希望在颜色更改时执行某些操作的任何其他代码使用。

    事件用于外部代码,而不是内部类管理。正如我前面的人所说,您面临的问题更多的是封装问题,您可以通过两种方式解决:

    2) 当需要颜色时更新(就像我前面的人一样)。创建一个属性,在每次访问时计算颜色。这是最简单的,而且在大多数情况下都是完美的。但是如果您经常使用这个属性,那么所有这些重新计算都可能是一个性能问题(在这种情况下,计算颜色不是很密集,所以不重要)。

    在这种情况下,为了简单起见,我会做选项2,尽管性能有点小缺点…我的意思是性能有点小缺点。。。

        2
  •  4
  •   brendan    14 年前

    Private ReadOnly Property myColor As Color
      Begin Get
        Return Color.FromArgb(Red, Green, Blue)
      End Get
    End Property
    

        3
  •  2
  •   Kibbee    14 年前