2009-05-20 84 views
1

代碼庫,我在那裏工作的有一個具有如何將對象轉換爲可空類型的struct?

Public Sub SetDropDownValue(Of T As Structure)(ByVal target As ListControl, ByVal value As Nullable(Of T)) 

我寫的方法傳遞Object類型的參數簽名的方法。

如何將對象轉換爲可傳入SetDropDownValue方法的東西?

回答

0

不,您將無法將參考類型轉換爲值類型(這正是Structure約束所代表的意思)。 CLR允許你將一個值類型作爲參考類型(這被稱爲boxing),但是這兩種不同類型的實現(和語義)之間的區別的性質使得反過來變得不可能。

唯一能想到的就是創建一個值類型,它將對象的引用保存爲字段,但也許這個問題可能暗示您正在以錯誤的方式處理整個事件。

+0

我開始覺得代碼變得有點臭了。時間重新思考。 – ilivewithian 2009-05-20 11:22:03

0

如果你知道T這應該工作:

something.SetDropDownValue(target, DirectCast(value, Nullable(Of T))) 

有關詳細信息,請參閱本article

如果您不知道類型T,您遇到了麻煩,並且必須在運行時開始反思。這是複雜的,危險的,並且具有可怕的性能。

相關問題