zoukankan      html  css  js  c++  java
  • 委托的兼容

    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"; }
    }
  • 相关阅读:
    [原]Linux 命令行浏览器
    Linux 命令行浏览器
    [原]Linux 命令行 发送邮件
    Linux 命令行 发送邮件
    [原]Linux 修改时区
    Linux 修改时区
    [原]Ubuntu 下安装Mongodb
    离线解密RDP凭证密码
    [Win]权限维持
    Nginx反向代理
  • 原文地址:https://www.cnblogs.com/XiaoRuLiang/p/12422955.html
Copyright © 2011-2022 走看看