我发现我可以像C#一样初始化一个集合:
Dim List = New List(Of Int32) From {1,2,3,4,5,6,7,8,9}
大!
但是,在初始化只读集合属性时,这不起作用.例如,如果我有这个类:
Public Class Class1 Private Readonly List = New List(Of Int32) Public Readonly Property ListProp() As List(Of Int32) Get Return List End Get End PropertyEnd Class
我无法以这种方式初始化它:
Dim class1 = New Class1 With {.ListProp = New List(Of Int32) From {1,9}}
或者这样:
Dim class1 = New Class1 With {.ListProp = {1,9}}
我得到一个“Property’ListProp’是’Readonly’.”消息,这是正确的,但它说here在Basic.NET中支持集合初始化程序,其中自动调用Add方法.我错过了什么或不支持属性吗? C#4支持这个……
提前致谢,
aalmada
编辑:
以下是等效的可编译C#代码供参考:
using System;using System.Collections.Generic;namespace ConsoleApplication3{ class Class1 { private Readonly List<Int32> List = new List<Int32>(); public List<Int32> ListProp { get { return this.List; } } } class Program { static voID Main(string[] args) { // a collection initialization var List = new List<Int32> { 1,9 }; // a read-only collection property initialization var class1 = new Class1 { ListProp = { 1,9 } }; } }}解决方法 您正在尝试将ListProp属性设置为新的List(Of Int32)实例.
因为它是Readonly,所以你做不到.
总结以上是内存溢出为你收集整理的VB.NET中只读集合属性的集合初始值设定项?全部内容,希望文章能够帮你解决VB.NET中只读集合属性的集合初始值设定项?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)