首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有IEnumerator的自定义类型IEnumerator

带有IEnumerator的自定义类型IEnumerator
EN

Stack Overflow用户
提问于 2015-05-01 09:46:01
回答 1查看 271关注 0票数 0

见.net小提琴链接https://dotnetfiddle.net/E4eCWl

我有一个作业作业要使用ArrayList类型的图书,所以虽然我知道List<T>是正确的处理问题的方法,但我需要使用ArrayList,因为这是作业的一部分

如此使用

代码语言:javascript
复制
var books = new ArrayList<Book> {new Book("Moby Dick", 254)};

我在这里的理解是,一旦我将自定义类型book添加到Arraylist中,我就创建了一个自定义类,因为Resharper帮助我创建了一个新类,以适应图书的添加,因此添加了一个新类,但现在我陷入了困境,因为我不知道如何实现add方法,也不知道如何为..使用GetEnumerator。

任何提示或网站,我可以去进一步帮助我,或我走错了道路,从创建类型开始。

自定义图书类

代码语言:javascript
复制
class Book
{
    public string Title { get; set; }
    public int NumberOfPages { get; set; }

    public Book(string title, int pages)
    {
        Title = title;
        NumberOfPages = pages;
    }

}

生成类

代码语言:javascript
复制
class ArrayList<T> : IEnumerable
{
    internal void Add(Book book)
    {
        throw new NotImplementedException();
    }

    public IEnumerator GetEnumerator()
    {
        throw new NotImplementedException();
    }
}
EN

回答 1

Stack Overflow用户

发布于 2015-05-01 09:50:06

ArrayList是.NET 1.0和1.1天的收藏(很久很久以前,就像星球大战入门.)。

因此,ArrayList是在泛型之前引入的,它不是泛型集合。

它不同于List<T>,因为集合项不是作为某种具体类型键入的,而是作为object类型键入的。也就是说,可以将任何类型的对象添加到ArrayList中。

代码语言:javascript
复制
ArrayList list = new ArrayList();
list.Add(new Pear());
list.Add(new Apple());

此外,当您需要获得一个项目时,您需要再次转换为具体类型:

代码语言:javascript
复制
// list[0] will return the pear typed as System.Object
Pear pear = (Pear)list[0];

顺便说一句,就像我在第一段中说的那样,这门课已经过时了很长时间(.)很久以前,实际的代码不应该再使用它了。您需要使用List<T> (或System.Collections.Generic命名空间中的任何其他通用列表)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29984646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档