2016-08-23 123 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