c# struct/class initilaze 一个 Arraylist

标签 c# struct initialization arraylist

我有这段代码:

 public struct SmartFilter
    {
        public int from, to;
        public ArrayList collect  = new ArrayList();                 
        public long bit;            
    }

我得到错误:

cannot have instance field initializers in structs

我尝试了不同的方法来克服这个错误但没有成功,

如何在结构/类中有一个数组列表?

最佳答案

这里有多个问题:

  • 有一个可变的结构 - 只是邪恶
  • 有公共(public)领域
  • 使用ArrayList

这些都不能帮助你......

对于 class 初始化器可以正常工作

使用一个属性你可以做惰性初始化:

public ArrayList Collect {
    get { return collect ?? (collect = new ArrayList()); }
}

我会重构为:

public class SmartFilter
{
    public int From  {get;set;}
    public int To  {get;set;}
    private List<SomeKnownType> collect  = new List<SomeKnownType>();
    public List<SomeKnownType> Collect { get { return collect; } }
    public long Bit {get;set;}
}

关于c# struct/class initilaze 一个 Arraylist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4623516/

相关文章:

c# - 创建 WCF 消息的缓冲副本

C编程。如何深拷贝结构?

c - c中带有数组的结构的结果不一致

java - 创建一个二维数组并将每个元素初始化为 i * j 的值,其中 i 和 j 是 2 个索引(例如,元素 [5][3] 为 5 * 3 = 15)

java - 如何加快文本转语音的初始化速度

c# - 有没有办法*防止* ReSharper 并行运行程序集的单元测试?

c# - 为水平表格的列引入分页符

c# - 如何评估此字符串串联?

c - stackInit 函数出现段错误,我不明白为什么

iOS swift : init not being fired?