C#尝试将对象添加到对象集合中

时间:2018-01-20 10:24:01

标签: c#

所以我试图为某个学校的任务创建某种类型的库,但是我很难将对象添加到集合中。

它适用于 Auteurs 这个系列,但同一段代码不能与 Leden Boeken 一起使用。

我得到的错误是:

LEDEN (局部变量)盖子l1 参数1:无法转换为AO2.Lid'到' AO2.Leden'。

Boeken (局部变量)Boek b1 参数1:无法转换为AO2.Boek'到AO2.Boeken'。

有人可以给我一些指示让我重新开始吗?

提前谢谢。

    class Auteurs
    {
        private Auteur[] _Items = new Auteur[0];

        public Auteur this[int index]
        {
            get { return _Items[index]; }
        }

        public int Count { get; private set; }

        public void Add(Auteur auteur)
        {
            Count++;
            Array.Resize(ref _Items, Count);
            _Items[Count - 1] = auteur;
        }
    }
    class Leden
    {
        private Leden[] _Items1 = new Leden[0];

        public Leden this[int index]
        {
            get { return _Items1[index]; }
        }

        public int Count { get; private set; }

        public void Add(Leden leden)
        {
            Count++;
            Array.Resize(ref _Items1, Count);
            _Items1[Count - 1] = leden;
        }
    }
    class Boeken
    {
        private Boeken[] _Items1 = new Boeken[0];

        public Boeken this[int index]
        {
            get { return _Items1[index]; }
        }

        public int Count { get; private set; }

        public void Add(Boeken boeken)
        {
            Count++;
            Array.Resize(ref _Items1, Count);
            _Items1[Count - 1] = boeken;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Auteur a1 = new Auteur("Name1", "Lastname1");
            Auteur a2 = new Auteur("Name2", "Lastname2");

>these work so made 2 new 'Auteur' and added them to the collection 'Auteurs'

            Auteurs auteurs = new Auteurs();
            auteurs.Add(a1);
            auteurs.Add(a2);

            Lid l1 = new Lid("Name1", "Lastname1");
            Lid l2 = new Lid("Name2", "Lastname2");
            Lid l3 = new Lid("Name3", "Lastname3");

>When I try the same code with Leden it doesn't work and gives the error as stated above

            Leden leden = new Leden();
            leden.Add(l1);

            Boek b1 = new Boek("Bookname1");

>The Same error with Boeken.>

            Boeken boeken = new Boeken();
            boeken.Add(b1);
    }
}

2 个答案:

答案 0 :(得分:0)

错误的原因是你的函数需要一个特定的类型,但你给它一个不同的(它不能在两者之间隐式转换)。

Leden的添加期待Leden个对象:public void Add(Leden leden)   - 但是你传递的是Lid - leden.Add(l1);类型的实例。

我的猜测是,您希望Leden包含Lid而不是Leden的数组:

class Leden
{
    private Lid[] _Items1 = new Lid[0];

    public Lid this[int index]
    {
        get { return _Items1[index]; }
    }

    public int Count { get; private set; }

    public void Add(Lid lid)
    {
        Count++;
        Array.Resize(ref _Items1, Count);
        _Items1[Count - 1] = lid;
    }
}

BoekenBoek

相同

答案 1 :(得分:0)

在Leden和Boeken,你应该发送一个Lid和Boek来添加,所以看起来应该是这样的

class Leden
{
    private Lid[] _Items1 = new Lid[0];

    public Lid this[int index]
    {
        get { return _Items1[index]; }
    }

    public int Count { get; private set; }

    public void Add(Lid leden)
    {
        Count++;
        Array.Resize(ref _Items1, Count);
        _Items1[Count - 1] = leden;
    }
}