在C#中创建通用列表类

时间:2017-01-30 10:56:58

标签: c# list generics

我正在研究一些大学材料,我有以下问题

设计并实现一个专门用于存储公司所有对象的集合类 根据类层次结构的文档,继承自任何.NET合适的集合类(例如, ArrayList类,或通用List)。该集合是实现单一方法 第2页,共5页 GetDataOfAll()返回一个字符串,用于连接所有对象的数据 分隔符。 (该方法稍后将用于在合适的输出占位符中显示数据)

我写了这个:

class MainList : List<Document>
{
    public string GetDataFormAll()
    {
        string text = null;
        foreach (Document data in MainList)
        {
            text += data.GetData() + "\n";
        }
        return text;
    }
}

这是实现此目的的正确方法吗?

foreach (Document data in MainList)

Thsi si给我一个错误,它告诉我MainList的类型不正确。我该如何实现这一点。

2 个答案:

答案 0 :(得分:2)

您需要在自己的Document)集合中循环this。由于List<T>Enumerable<T>,您只需在foreach上写一个this循环:

public string GetDataFormAll() {
    string text = null;
    foreach (Document data in this) {
        text += data.GetData() + "\n";
    }
    return text;
}

(是的,我的代码就像埃及

答案 1 :(得分:1)

只是另一种更短的方式,不一定更好

public string GetDataFormAll()
{
    return string.Join("\n", this.Select(d => d.GetData());
}

当然,您可以使用.Select(GetData)语法缩短它。

这将在最后一个元素之后添加\n。取决于你想要什么。