VB.NET中只读集合属性的集合初始值设定项?

VB.NET中只读集合属性的集合初始值设定项?,第1张

概述我正在尝试在我的框架上支持Basic.NET,所以我试图将C#4代码转换为Basic.NET 10.微软致力于“共同演化”这两个,但我遇到了集合初始化的问题. .. 我发现我可以像C#一样初始化一个集合: Dim list = New List(Of Int32) From {1, 2, 3, 4, 5, 6, 7, 8, 9} 大! 但是,在初始化只读集合属性时,这不起作用.例如,如果我有这个类 我正在尝试在我的框架上支持Basic.NET,所以我试图将C#4代码转换为Basic.NET 10.微软致力于“共同演化”这两个,但我遇到了集合初始化的问题. ..

我发现我可以像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中只读集合属性的集合初始值设定项?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1252913.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存