考虑这段代码:
static void Main(string[] args)
{
Get<Student>(new Student());
System.Console.Read();
}
public static void Get<T>(T person)
{
Console.WriteLine("Generic function");
}
public static void Get(Person person)
{
person.Show();
}
这是我的个人课程:
class Person
{
public void Show()
{
Console.WriteLine("I am person");
}
}
class Student : Person
{
public new void Show()
{
Console.WriteLine("I am Student");
}
}
我打电话Get
给学生并将其传递给方法。像这样:
Get<Student>(new Student());
所以我明白了:Generic function
。但是当我Get
这样打电话时:
Get(new Student());
我希望这Get(Person person)
会被调用。但再次调用:Get<T>(T person)
。为什么编译器有这种行为?