次の例はC# in Depth: What you need to master C# 2 and 3から取得されており、jskeetが特定したが間違っているだけで、大きな変更が発生するようです。説明してください:contravarianceは告白された動作を引き起こすようです
今delegate void SampleDelegate(string x);
public void CandidateAction (string x)
{
Console.WriteLine("Snippet.CandidateAction")
}
public class Derived: Snippet
{
public void CandidateAction (object x)
{
Console.WriteLine("Derived.CandidateAction")
}
}
....
Derived x = new Derived();
SampleDelegate factory = new SampleDelegate (x.CandidateAction);
factory ("test");
をSampleDelegateが文字列ないオブジェクトを受け入れるよう、なぜそれが完全に動作するはずです。私の知る限り、オブジェクトは文字列から派生しません。それは別の方法です。それはC#2.0の下でcontravarianceが許すものです。反対の効果を発揮するようです。
おかげ