C#-数组内类的多态性

c#

我正在尝试为 Object 数组内的类实例使用多态性:

ClassA a = new ClassA();
ClassB b = new ClassB();

Object[] classes = new Object[] { a, b };

其中一个类的一个例子是:

public class ClassA 
{
    public string PrintOutput()
    {
        return "254,62,455,5,15,62,656";
    }
}

我尝试过类似的东西:C# class polymorphism

此人遇到的问题是他们创建了一个类型为 A(其中一个类)的数组。将数组类型更改为 Object 会导致错误:可以找到不包含方法定义的对象/无法找到接受对象类型的第一个参数的可访问扩展方法。

编辑:目前,我只是想打印每个类中方法的输出:

foreach (Object obj in classes)
{
    Console.WriteLine(obj.PrintOutput());
}

obj.PrintOutput() 是我收到上述错误的地方。

回答

一种方法是使用通用接口

public interface IPrintOutput
{
    string PrintOutput();
}

public class ClassA : IPrintOutput
{
    public string PrintOutput()
    {
         return "254,62,455,5,15,62,656";
    }
}

public class ClassB : IPrintOutput
{
    public string PrintOutput()
    {
         return "something else";
    }
}

IPrintOutput[] classes = new IPrintOutput[] { a, b };

第二种方法可以覆盖 ToString 并使用它(每个对象都有 ToString)


以上是C#-数组内类的多态性的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>