C# CTS中询问如何完成此c代码

C# CTS中询问如何完成此c代码,c#,oop,C#,Oop,这个问题是在一次采访中提出的。我无法解决这个问题,它是不完整的。在“人类”课程中,什么必须用问号来代替。请帮帮我 class Dog() { public void run() { Console.WriteLine("Dog runs"); } } class Cat() { public void run() { Console.WriteLine("Cat runs"); } } class 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);
    }
}*

如果允许您更改代码:执行类似操作。 如果没有,请使用dynamic关键字(就像在另一个答案中提到的那样)。顺便说一下:你的语法错了<代码>类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);
    }
}

如果您不能更改程序的任何其他部分,而不是
??
,则唯一的选择(在修复其他类定义中的语法错误后)是
动态

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

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

他们要求用问号代替。您添加了一个全新的界面,并使
Dog
Cat
实现了它。不确定这是否是预期的。不管怎样,这个问题都没有多大意义你是对的。我已经编辑了我的答案。但是使用上面提到的动态关键字。。。真奇怪。谢谢……你说得对。所以。我是对的,但把另一个答案标为正确答案。这有点令人困惑:)。嗯。你是对的。但我无法想象他会做那样的事。因为这不仅仅是奇怪的代码…@matthew是这类狗()right@Rex不,OP在最初的问题中显然有输入错误:类名
()
后面不能有空括号。我只是假设这是一个错误,并忽略了它们。
class Dog()
-语法错误。这就是他们给你的密码吗?这是一次面试,你觉得问题不完整。为什么不通知他们,并解释为什么你认为这是不完整的?说出你希望在那里完成的问题。