2013-07-19 48 views
5

我想用一個函數將二進制整數轉換爲denary,反之亦然,以便我可以將其導入另一個項目而不必重寫函數。它工作正常,這裏是類的一部分:這裏是類的一部分:VB.NET - 類中的擴展函數?

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) 

但我做不到在類中寫入擴展方法。有沒有辦法做到這一點?這不是非常重要,但我喜歡在可行的情況下使用擴展方法。

回答

12

VB編寫的.NET擴展方法,必須在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 

如果模塊不在同一個命名空間,你應該導入使用它的名稱空間。

+0

什麼是命名空間?模塊?我是否像導入課程一樣導入它? – Lou

+0

命名空間是組織代碼的另一種方式,請參閱此處瞭解[瞭解程序集和命名空間](http://msdn.microsoft.com/zh-cn/library/ms973231.aspx) 模塊是一個邏輯集合代碼一個程序集,在這裏閱讀它[.NET中的模塊是什麼?](http://stackoverflow.com/questions/645728/what-is-a-module-in-net) –

+0

所以,只是爲了澄清:我應該在一個單獨的命名空間中的新模塊中寫入函數?並應該在一個單獨的.vb文件? – Lou