デリゲートの呼び出しと、通常のメソッド呼び出しが別のメソッドを呼び出す理由を次のコードスニペットデリゲートの共分散とContavariance
namespace ConsoleApplication1
{
public delegate TResult Function<in T, out TResult>(T args);
class Program
{
static void Main(string[] args)
{
Program pg =new Program();
Function<Object, DerivedClass> fn1 = null;
Function<String, BaseClass> fn2 = null;
fn1 = new Function<object, DerivedClass>(pg.myCheckFuntion)
fn2=fn1;
fn2("");// calls myCheckFuntion(Object a)
pg.myCheckFuntion("Hello"); //calls myCheckFuntion(String a)
}
public DerivedClass myCheckFuntion(Object a)
{
return new DerivedClass();
}
public DerivedClass myCheckFuntion(String a)
{
return new DerivedClass();
}
}
を考えてみましょう。
追加するだけのものはありません。 +1 –
あなたはJon Skeetを破ることはできません! – siride
私のために速すぎる:( – VMAtm