这个问题是在接受采访时提出来的。我无法解决这个问题,这是不完整的。什么必须用" 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);
}
}*
答案 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);
}
}