委托的兼容
Posted xiaoruliang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了委托的兼容相关的知识,希望对你有一定的参考价值。
1. 委托的类型兼容
delegate void D1(); delegate void D2(); D1 d1 = Method1; D2 d2 = d1;
下面是被允许的:
D2 d2 = newD2 (d1);
对于具体相同的目标方法的委托是被视为相等的:
delegate void D(); ... D d1 = Method1; D d2 = Method1; Console.WriteLine (d1 == d2); // True
同理,对于多播委托,如果含有相同的方法和相同的顺序,也被视为相等。
2. 参数类型兼容
在OOP中,任何使用父类的地方均可以用子类代替,这个OOP思想对委托的参数同样有效。如:
delegate void StringAction(string s);class Program { static void Main() { StringAction sa = new StringAction(ActOnObject); sa("hello"); } static void ActOnObject(object o) { Console.WriteLine(o); // hello } }
3. 返回值类型兼容
道理和参数类型兼容一样:
delegate object ObjectRetriever();class Program { static void Main() { ObjectRetriever o = new ObjectRetriever(RetriveString); object result = o(); Console.WriteLine(result); // hello } static string RetriveString() { return "hello"; } }
以上是关于委托的兼容的主要内容,如果未能解决你的问题,请参考以下文章