委托的协变: class Phone { } class Mobile : Phone { } delegate Phone PhoneDele(); class Program { static void Main(string[] args) { Program pro = new Program(); PhoneDele pd1 = pro.GetPhone; PhoneDele pd2 = pro.GetMobile; } public Phone GetPhone() { return null; } public Mobile GetMobile() { return null; } }
委托的逆变: class Phone { } class Mobile : Phone { } delegate Phone PhoneDele(Mobile pho); class Program { static void Main(string[] args) { Program pro = new Program(); PhoneDele pd1 = pro.SetPhone; PhoneDele pd2 = pro.SetMobile; } public Phone SetPhone(Phone pho) { return null; } public Mobile SetMobile(Mobile mob) { return null; } }