6

我正在尝试创建一个具有将二进制整数转换为 denary 的函数的类库,反之亦然,这样我就可以将其导入另一个项目而无需重写该函数。它工作正常,这是课程的一部分:

Public Class BinaryDenary
    Public Shared Function ToBinary(ByVal DenaryNumber As Integer) As Integer
        Dim Binary As String = ""
        While DenaryNumber > 0
            If DenaryNumber Mod 2 = 1 Then
                Binary = 1 & Binary
            Else
                Binary = 0 & Binary
            End If
            DenaryNumber \= 2
        End While
        Return CInt(Binary)
    End Function
End Class

我已经在项目中对其进行了测试,并且效果很好。

ToBinary(3) 'Returns 11
ToDenary(110) 'Returns 6

但是 - 主要是出于审美原因 - 我希望能够像扩展方法一样使用它,这样我就可以使用一个变量并执行此操作:

NormalInt.ToBinary(3)

但是我不能在类中编写扩展方法。有没有办法做到这一点?这不是很重要,但我喜欢尽可能使用扩展方法。

4

1 回答 1

16

用 VB .NET 编写的扩展方法,必须在 a 中Module并用Extension属性标记,如下所示:

Public Module BinaryDenary

    <Extension()>
    Function ToBinary(ByVal DenaryNumber As Integer) As Integer
        Dim Binary As String = ""
        While DenaryNumber > 0
            If DenaryNumber Mod 2 = 1 Then
                Binary = 1 & Binary
            Else
                Binary = 0 & Binary
            End If
            DenaryNumber \= 2
        End While
        Return CInt(Binary)
    End Function

End Module

如果模块不在同一个命名空间中,则应导入使用它的命名空间。

于 2013-07-19T23:02:07.907 回答