1

我目前正在使用此代码来移动夹具:

Public Class ClampSet
    Public Sub New(ByVal gripL As Single, ByVal gripR As Single, ByVal passAxis As Integer)
        GripDistanceRight.DimMillimeters = gripL
        GripDistanceLeft.DimMillimeters = gripR
        Axis = passAxis
    End Sub

    Public GripDistanceRight As clsDimension = New clsDimension()
    Public GripDistanceLeft As clsDimension = New clsDimension()
    Public Axis As Integer

    Public Sub moveClampIn()
        If (Axis = 1) Then
            digiouts.MoveLeftClampIn()
        ElseIf Axis = 2 Then
            digiouts.MoveMiddleClampIn()
        ElseIf Axis = 3 Then
            digiouts.MoveRightClampIn()
        End If
    End Sub
    Public Sub moveClampOut()
        If (Axis = 1) Then
            digiouts.MoveLeftClampOut()
        ElseIf Axis = 2 Then
            digiouts.MoveMiddleClampOut()
        ElseIf Axis = 3 Then
            digiouts.MoveRightClampOut()
        End If
    End Sub
End Class

我正在尝试了解有关 OO 编程的更多信息,但我无法理解 Delegates。

我想我可以将委托作为参数传递给 move() 函数,以便此类可以为我提供在初始化 ClampSet 对象时指定我真正想要使用的方法(即 MoveLeftClampOut())的选项。

而且我认为这将是一个更好的解决方案,因为我不知道将来会有多少种不同的clampMove 方法,并且我希望我的代码更加灵活。

如果我可以使用委托来更改 ClampSet 对象在 move() 上执行的方法,那么我的代码应该是什么样的?

PS我必须使用其他人提供给我的方法。(MoveLeftClampIn()、MoveLeftClampOut() 等..)

4

1 回答 1

0

在您的情况下使用 select 语句对您来说更好。委托不是必需的。例如:您可以使用委托来调用另一个线程当前正在使用的方法以进行安全编码。

于 2013-08-01T22:11:03.427 回答