如何使用对象初始化程序在vb.net中创建数组来设置属性

old*_*vid 2 c# vb.net

我正在查看http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api上的代码示例

作为一个练习,我试图将它从C#翻译成vb.net但是没有运气这个片段,

    public class Product
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public string Category { get; set; }
            public decimal Price { get; set; }
    }
     Product[] products = new Product[] 
       { new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 }, 
         new Product { Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M }, 
         new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M } 
            };
Run Code Online (Sandbox Code Playgroud)

我试过了

      Public class Product
         Public Property Id As Integer
         Public Property Name As String
         Public Property Category As String
         Public Property price As Decimal
      End Class

    Dim products() As Product = { _
         new Product (Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 ), _
         new Product ( Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M ), _
         new Product (Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M ) }
Run Code Online (Sandbox Code Playgroud)

我已经看到了使用List而不是数组的建议,所以我打算尝试一下,但想知道我在这里缺少什么.

Ric*_*Ric 9

看一下对象初始化器:

Dim namedCust = New Customer With {.Name = "Terry Adams".....
Run Code Online (Sandbox Code Playgroud)

注意到With'和'.对于要设置的每个属性.

 Dim products() As Product = { _
         new Product With {.Id = 1, .Name = "Tomato Soup", .Category = "Groceries", 
                           .Price = 1 }, _.....
Run Code Online (Sandbox Code Playgroud)

MSDN链接

进一步阅读.