2010-06-02 75 views
1

是否有可能重載VB.net中的數組/字典訪問操作符?例如,你可以說類似於:VB.NET重載數組訪問?

Dim mydict As New Hashtable() 
mydict.add("Cool guy", "Overloading is dangerous!") 
mydict("Cool guy") = "Overloading is cool!" 

而且工作得很好。但我想要做的是能說:

mydict("Cool guy") = "3" 

,然後有3個自動將轉換爲整數3

我的意思是,相信我能有一個私有成員mydict.coolguy和有setCoolguy()和getCoolguy()方法,但我會寧願能夠寫成以前的方式,如果可能的話。

感謝


爲了澄清 - 我希望能夠「做的東西」與價值。因此,例如,說我有

myclass.fizzlesticks ' String type 
myclass.thingone  ' Numerical type, say integer 

,然後我希望能寫

myclass("thingummy") = "This is crazy" 

它將觸發關閉,看起來像這樣

Private sub insanitea(Byval somarg as Object, Byval rhs as Object) 
    If somearg = "thingummy" And rhs = "This is crazy" Then 
     thingone = 4 
     fizzlesticks = rhs & " and cool too!" 
    End If 
End Sub 

的方法這不是確切的用例,但我認爲它能夠更好地說明我在尋找什麼?

+0

我花了刺傷你問什麼,但不知道問題的標題和我讀coorespond。讓我知道,如果我在這裏的基礎。 – Tommy 2010-06-02 17:50:20

+0

這可能與我的例子一樣準確,如果這些都是我需要的,那麼您的解決方案可以很好地工作。我只想在我的課堂中稍微複雜一點,即在分配時我希望能夠轉換這些值,如果它們不是它們應該是的。如果那有意義的話... – 2010-06-02 17:59:02

回答

2

不,你不能重載Visual Basic中的數組訪問運算符。

Currently你可以重載的唯一運營商:

Unary operators: 
+ - Not IsTrue IsFalse CType 

Binary operators: 
+ - * / \ & Like Mod And Or Xor 
^ << >> = <> > < >= <= 
0

爲什麼你不能做到以下幾點:

mydict("Cool guy") = 3 //without quotes 

然後,你可以做

dim x = mydict("Cool guy") + 7 

//x returns 10 

或者,你可以做一個Int32.tryParse

dim x as integer 
if int32.tryParse(mydict("Cool guy"), x) then 
    return x + 7 //would return 10 
end if