簡體   English   中英

如何在變量聲明中使用 class 類型作為類型

[英]How to use the Type class as type in variable declaration

我想對特定類型的不同控件列表進行相同的操作。 我可以一次做一個類型,但我想:“有很多這樣的,所以為什么不循環做這個呢?” 現在我當然想知道我哪里出錯了。 問題很容易重現:

Dim myType As Type = GetType(TextBox)
Dim newList As New List(Of myType) ' this is not allowed

這是具體的錯誤信息:BC30002: Type 'currentType' is not defined

錯誤信息

有沒有辦法使用 class 類型的 object 作為類型,或者進行類似的操作,讓我做這樣的事情:

For Each currentType As Type In {GetType(myCustomType), GetType(anotherCustomClassType)}
    Dim newList As New List(Of currentType)
    ' do stuff
Next

不,沒有。 創建泛型List時,必須指定數據類型。 A Type object 不是數據類型。 它是一個包含有關數據類型的信息的 object。 基本上,當您創建List(Of T)時,您只能將T修復為您可以首先傳遞給GetType的東西。 兩者都需要數據類型。

您不能將數據類型放在列表中,因為它們不是對象。 您可以做的是編寫一個通用方法來為一種類型執行您想要的操作,例如

Private Sub DoStuff(Of T)()
    Dim newList As New List(Of T)

    'Do stuff here.
End Sub

然后調用該方法並指定不同的泛型類型,例如

DoStuff(Of SomeType)()
DoStuff(Of SomeOtherType)()
'Etc.

但是,您必須進行單獨的調用,因為您需要指定泛型類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM