在C#我想這樣做:VB.NET類型轉換一個列表視圖標籤對象
MYTYPE VAL = (MYTYPE)mylistview.SelectedItems(0).TAG;
我該怎麼在VB.NET中做同樣的事情?
在C#我想這樣做:VB.NET類型轉換一個列表視圖標籤對象
MYTYPE VAL = (MYTYPE)mylistview.SelectedItems(0).TAG;
我該怎麼在VB.NET中做同樣的事情?
我的VB很爛,但我認爲這將是:
Dim val as MyType = CType(mylistview.SelectedItems(0).Tag, MyType)
或
Dim val as MyType = DirectCast(mylistview.SelectedItems(0).Tag, MyType)
DirectCast
不執行任何其他轉換 - 包括(IIRC)用戶指定的轉換,而CType
將執行更多轉換比在C#中投的會
在這種特殊情況下,I th墨水DirectCast
可能是你之後的,因爲它應該只是一個參考轉換。
不知道我是對的,不知道究竟你正在試圖做的,但一般語法是:
val = CType(listview.selecteditems(0).tag,mytype)
對於絕大多數病例CType
運營商將在這裏給正確的行爲。
Dim val = CType(mylistview.SelectedItems(0).Tag,MyType)
然而,在每種情況下都不是這樣。之所以這樣說,是因爲C#轉換運算符和VB中的等價運算符之間沒有1-1映射。 C#轉換運算符支持CLR和用戶定義的轉換運算符。
VB的兩個主要鑄造操作符是DirectCast和CType。 DirectCast僅支持運行時轉換,並且會錯過用戶定義的轉換。 CType支持運行時和用戶定義的轉換。但它也支持詞法轉換(例如字符串文字「123」到Integer
類型)。因此它將捕獲C#演員操作員所做的所有事情,但也包含更多內容。
我會一如既往地推遲Jon Skeet :) – 2010-02-24 16:09:16