初始化索引器类

问题描述 投票:0回答:1
    public class myCollection<T> {
        private T[] arr = new T[100];
        
        public T this[int i] {
            get { return arr[i]; }
            set { arr[i] = value; }
        }
    }

在这个简单的示例中,字符串类型的 myCollection 的数组类型自动调整为 100 。 我的具体问题是,如果我只需要 10 或 25 的大小,如何保持灵活性,以便在需要的数量少于 100 甚至更多时不浪费内存。如何通过参数转义这个固定大小?

indexer
1个回答
0
投票

添加一个构造函数,让您提供所需的值:

public class myCollection<T> {
    private T[] arr;
    
    public T this[int i] {
        get { return arr[i]; }
        set { arr[i] = value; }
    }

    public myCollection(int size) {
        arr = new T[size];
    }
}

如果您仍然想要一个无参数构造函数,您可以链接一个在未指定值时仍默认为 100 的构造函数:

public class myCollection<T> {
    private T[] arr;
    
    public T this[int i] {
        get { return arr[i]; }
        set { arr[i] = value; }
    }

    public myCollection(int size) {
        arr = new T[size];
    }

    public myCollection() : this(100) { }
}
© www.soinside.com 2019 - 2024. All rights reserved.