如何从另一个类访问通用列表数据

时间:2019-07-15 23:13:53

标签: c# generic-list

我正在尝试访问以前在Book Class中初始化,然后传递到MyList的通用类信息。

此外,当MyList在构造函数中使用book对象时,实际上发生了什么? 这是代码。

    class Book
    {
        public int id;
        public string name;

        public Book(int in_id, string in_name)
        {
            this.id = in_id;
            this.name = in_name;
        }
    }

    class MyList<T>
    {
        public MyList(T _obj)
        {   
            //How to acomplish this
            //Console.WriteLine(_obj.id);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Book book1 = new Book(1, "Data Structures");

            MyList<Book> val1 = new MyList<Book>(book1);

            Console.ReadKey();
        }
    }

1 个答案:

答案 0 :(得分:0)

您无法打印这本书的ID,因为通用T对此一无所知。您可以使用基类(抽象类)作为实体类(例如Book)的基础。将普通成员放入其中,例如。 ID。由于id包含在基类中,因此请删除Book类中的一个。然后让Book从基类继承。现在将通用MyList限制为仅接受MyBase(包括所有继承的类型)。由于MyList限于MyBase,因此它现在知道T是MyBase,并且可以访问id字段,因为id是在MyBase中声明的。

iframe

我不确定您要实现什么目标,因为.Net中有一个abstract class MyBase { public int id; } class Book : MyBase { public string name; public Book(int in_id, string in_name) { this.id = in_id; this.name = in_name; } } class MyList<T> where T : MyBase { public MyList(T _obj) { Console.WriteLine(_obj.id); } } 可以用作通用列表。