有没有办法从另一个方法调用类方法?

时间:2019-10-13 17:51:52

标签: c#

我是一个初学者,正在做学校作业,我想创建一些书,将它们放在列表中,然后使用班级中的一种方法将列表打印到另一个函数中。

这是我的职业目标

class Knjiga
{
    public string Naslov;
    public string Avtor;
    public int StStrani;
    public int LetoIzdaje;
    public bool NaVoljo;


    public Knjiga(string aNaslov, string aAvtor, int aStStrani, int aLetoIzdaje, bool aNavoljo)
    {
        Naslov = aNaslov;
        Avtor = aAvtor;
        StStrani = aStStrani;
        LetoIzdaje = aLetoIzdaje;
        NaVoljo = aNavoljo;
    }
    public void Izpisi()
    {
        Console.WriteLine(Naslov + ", " + Avtor + ", " + LetoIzdaje);

    }

这是我的主意

static void Main(string[] args)
    {

        Knjiga knjiga1 = new Knjiga("East of Eden", "John Steinbeck", 601, 1952, true);
        Knjiga knjiga2 = new Knjiga("From here to eternity", "James Jones", 861, 1951, true);
        Knjiga knjiga3 = new Knjiga("The Lord of the Rings", "J.R.R. Tolkien", 1200, 1954, true);

        List<Knjiga> knjigaList = new List<Knjiga>
        {
            knjiga1, knjiga2, knjiga3
        };


        foreach (var i in knjigaList)
           i.Izpisi();    //THIS ONE WORKS

        Test(knjigaList);

        Console.ReadLine();
    }

这是我的另一项测试功能

static void Test<T>(List<T> test)
        {
            foreach (var i in test)
                i.Izpisi(); // THIS ONE CAN'T ACCESS THE METHOD

当我在main()中使用foreach时,该方法有效,但是,如果我尝试将列表传递到main方法之外,则无法再调用类方法。我得到的“ T”不包含“ Izpisi”的定义,找不到可以接受的扩展方法“ Izpisi”,它接受类型为“ T”的第一个参数。在这里可以做什么?

1 个答案:

答案 0 :(得分:1)

有几种方法可以进行此编译,但是您可能需要再看看为什么要这样做。

如评论中所述,您可以指定Knjiga的列表:

static void Test(List<Knjiga> test)
{
    foreach (var i in test)
        i.Izpisi();
}

您还可以将T设置为Knjiga

static void Test<T>(List<T> test) where T : Knjiga
{
    foreach (var i in test)
        i.Izpisi();
}

但是再说一次,第二个并没有什么意义,因为只有一个Kjniga。您是否需要interface;有继承结构吗?