如何完成这个c#代码???在CTS中询问

时间:2014-03-21 08:45:37

标签: c# oop

这个问题是在接受采访时提出来的。我无法解决这个问题,这是不完整的。什么必须用" Human"类。请帮帮我...

class  Dog()
{
    public void run()
    {
        Console.WriteLine("Dog runs");
    }
}
class Cat()
{
    public void run()
    {
        Console.WriteLine("Cat runs");
    }
}
class  Human
{
    public void run(???????? x)
    {
        Console.WriteLine("Human runs");
        x.run();

    }
}
class Program
{
    static void Main()
    {
        Dog dog=new Dog();
        Cat cat=new Cat();
        Human human=new Human();
        human.run(cat);
        human.run(dog);
    }
}*

2 个答案:

答案 0 :(得分:9)

如果你不能改变除??????以外的程序的任何其他部分,那么唯一的选择(在修复其他类定义中的语法错误之后)是dynamic

public void run(dynamic x)
{
    Console.WriteLine("Human runs");
    x.run();
}

虽然这是一些奇怪的代码。我讨厌那些没有实际意义的问题......

答案 1 :(得分:7)

如果允许您更改代码:执行类似的操作。 如果没有,请使用dynamic关键字(就像在另一个答案中提到的那样)。顺便说一下:你的语法错了。 class Dog() ...是错的。为什么要将()放在那里?

interface IPet
{
    void run();
}

class  Dog : IPet
{
    public void run()
    {
        Console.WriteLine("Dog runs");
    }
}
class Cat : IPet
{
    public void run()
    {
        Console.WriteLine("Cat runs");
    }
}
class  Human
{
    public void run(IPet x)
    {
        Console.WriteLine("Human runs");
        x.run();

    }
}
class Program
{
    static void Main()
    {
        Dog dog=new Dog();
        Cat cat=new Cat();
        Human human=new Human();
        human.run(cat);
        human.run(dog);
    }
}