2016-08-18 1 views
0

vb.netの関数の戻り値として汎用辞書を取得したいと考えています。vb.netの関数の戻り値として汎用辞書を取得したい

どうすれば入手できますか?

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Dim buttons As Dictionary(Of Integer, Button) = generateControls(Of Button)(3) 
    Dim textBoxes As Dictionary(Of Integer, TextBox) = generateControls(Of TextBox)(3) 

End Sub 

Private Function generateControls(Of T)(repeat As Integer) As Dictionary(Of Integer, T) 
    Dim dic As New Dictionary(Of Integer, T) 

    For i As Integer = 0 To repeat - 1 
     Dim control As New T 
     dic.Add(i, control) 
    Next 
    Return dic 

End Function 

答えて

2

型にデフォルトコンストラクタがあることを宣言する型制約を指定する必要があります。

利用generateControls(Of T As New)代わりのgenerateControls(Of T)

私が好むしかし:

Dim result = Enumerable.Range(0, 3). 
          ToDictionary(Function(i) i, Function(i) New TextBox() With {... }) 
+0

はどうもありがとうございました。これは私が欲しいものです。 – jeonggu

+0

あなたの好みは私には新しいものです。私はPythonでこのようなコードを見てきました。私はそれがC#で可能であるかどうかはわかりません。ありがとう。 – jeonggu

+0

問題なし@jonggu。これがあなたの問題を解決した場合、受け入れられた答えをチェックしてください。 – FloatingKiwi

関連する問題