具有[]和IEnumerable的类数组

时间:2009-06-30 23:01:14

标签: c# .net arrays .net-3.5

我创建了一个类似这样的类:

    public class MovieTheaterList
    {
        public DateTime Date { get; private set; }
        public int NumTheaters { get; private set; }
        public Theater[] Theaters { get; private set; }
    }

    public class Theater
    {
        public string Name;
    }

我希望能够将项目添加到MovieTheaterList类的Theatres数组中,但是当我尝试访问它时,它显示为IEnumerable类型并且没有Add()方法?

我习惯在C / C ++中的结构和类中使用数组,但是如何在.NET 3.5中向数组添加新项呢?

3 个答案:

答案 0 :(得分:4)

将影院公开为IList,而不是阵列,您将能够添加/删除项目。 e.g。

public class MovieTheaterList
{
    // don't forget to initialize the list backing your property
    private List<Theater> _theaterList = new List<Theater>(); 

    public DateTime Date { get; private set; }
    public int NumTheaters { get; private set; }

    // set is unnecessary, since you'll just be adding to / removing from the list, rather than replacing it entirely
    public IList<Theater> Theaters { get { return _theaterList; } }
}

答案 1 :(得分:2)

为了实现此功能,让MovieTheatreClass扩展通用列表怎么样。

public class MovieTheatreList : List<Theatre>
{
    public DateTime Date { get; private set; }
}

public class Theatre
{
    public string Name;
}

通过这种方式,您可以获得List的所有内置内容(如Count而不是单独使用NumOfTheatres属性)。

答案 2 :(得分:1)

使用

List<Theater> Theaters { get; private set; }

而不是剧院阵列。您可以使用

初始化它
Theaters = new List<Theater>();

在C#中使用列表通常比使用数组更受欢迎。您可以使用ToArray()轻松地将数组转换为数组,但这样您就不必担心在创建时正确调整数组大小,或者更重要的是,在执行期间调整大小。