码迷,mamicode.com
首页 > 其他好文 > 详细

委托的兼容

时间:2020-03-05 22:23:02      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:参数类型   类型兼容   gate   write   相等   返回   retrieve   hello   trie   

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"; }
}

 

委托的兼容

标签:参数类型   类型兼容   gate   write   相等   返回   retrieve   hello   trie   

原文地址:https://www.cnblogs.com/XiaoRuLiang/p/12422955.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!