次のコードを検討してください。
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();
}
これは私のPersonクラスです:
class Person
{
public void Show()
{
Console.WriteLine("I am person");
}
}
class Student : Person
{
public new void Show()
{
Console.WriteLine("I am Student");
}
}
Studentを呼び出しGet
てメソッドに渡します。次のようにします。
Get<Student>(new Student());
だから私はこれを取得します:.しかし、私がこのようGeneric function
に呼び出すとGet
:
Get(new Student());
これが呼び出されることを期待しGet(Person person)
ていますが、もう一度 call: Get<T>(T person)
. コンパイラがこの動作をするのはなぜですか?