2016-08-23 164 views
-2

(的MyClass)我有一類這樣的列表初始化vb.net

Class Myclass 
    itemdata as string 
    name as string 
End Class 

我如何初始化這個類和數組字符串的這兩個屬性?

這就是我想,這OS顯然是錯誤的

Dim ls As New List(Of Myclass)(New Myclass() {("A1,A2,A3,A4".Split(","))}) 

我需要初始化後這樣的事情,在列表中每個項目的價值就會像如果手動分配這樣

List(0).itemdata="A1" 
List(0).name="A1" 
List(1).itemdata="A2" 
List(2).name="A2" 

+0

你真的需要一個[MCVE。什麼是'dicOpts'? 'key'從哪裏來? – Enigmativity

+0

請檢查編輯 – Smith

+0

您如何期待四個值插入到具有兩個字段的類中?你期望創建兩個班還是四個班? – Enigmativity

回答

1

Myclass開頭是保留名稱,所以我用Myclass2

這是最接近你的代碼,我可以把它:

Dim dicOpts = New Dictionary(Of String, String) From {{"foo", "bar,woo"}} 
Dim key = "foo" 
Dim ls As New List(Of Myclass2) From { New Myclass2() With { .itemdata = dicOpts(key).Split(","c)(0), .name = dicOpts(key).Split(","c)(1) } } 

這給:

result


根據您的修改,我認爲這是更接近什麼你想要:

Dim text = "A1,A2,A3,A4" 
Dim ls = _ 
    text _ 
     .Split(","c) _ 
     .Select(Function (x) New Myclass2() With { .itemdata = x, .name = x }) _ 
     .ToList() 

現在我得到這樣的:

result2

+0

linq語句看起來不正確,它強調了從「From」到最後,表示預期的結尾 – Smith

+0

@Smith - 根本沒有LINQ代碼。我在發佈之前測試了代碼。它是有效的VB.NET代碼。 – Enigmativity

+0

我正在使用vs2008,所以也許可能會有編譯器的區別? – Smith

-1

我已經改名爲你的類(ES)......希望你明白什麼ü意味着它:

創建類:

Class xxx '(this was your 'myclass') 
    Private _p1 As String 
    Private _p2 As String 
    Private _p3 as String 

    Sub New(p1 As String, p2 As String) 
     ' TODO: Complete member initialization 
     _p1 = p1 
     _p2 = p2 
    End Sub 
    Sub New(p1 As String, p2 As String, p3 as String) 
     ' TODO: Complete member initialization 
     _p1 = p1 
     _p2 = p2 
     _p3 = p3 
    End Sub 
End Class 

我改變了SubNew法與2個重載...現在ü需要調用的類的實例與參數(或無):

Class yyy 
    Private lf As New List(Of xxx) 
    Sub CallOrWhatEver() 
     lf.Add(New xxx("itemdata", "name")) 
     lf.Add(New xxx("p1value","p2value","p3value")) 
    End Sub 
End Class