zoukankan      html  css  js  c++  java
  • 17、委托

    当方法绑定到委托时,C#和CLR都允许引用类型的协变性和逆变性。
    协变性是指方法能返回从委托的返回类型派生的一个类型。
    逆变性是指方法获取的参数可以是委托的参数类型的基类。
    例如下面这个委托
    delegate object MyCallback(FileStream fs);
    完全可以构造委托类型的一个实例并绑定具有以下原型的方法
    string SomeMethod(Stream s)
    在这里,SomeMethod的返回类型(string)派生自委托的返回类型(Object),这种协变性是允许的。
    SomeMethod的参数类型(Stream)是委托的参数类型(FileStream)的基类,这种逆变性是允许的。
    注意,只有引用类型才支持协变性和逆变性,值类型或void不支持

    回调代码引用类定义的其它成员

            private static void UseLocal(int num)
            {
                int[] ints = new int[num];
                AutoResetEvent done = new AutoResetEvent(false);
                for (int i = 0; i < ints.Length; i++)
                {
                    ThreadPool.QueueUserWorkItem(obj =>
                    {
                        int a = (int)obj;
                        ints[a] = a * a;
                        if (Interlocked.Decrement(ref num) == 0)
                        {
                            done.Set();
                        }
                    }, i);
                }
                done.WaitOne();
                for (int i = 0; i < ints.Length; i++)
                {
                    Console.WriteLine("index {0} , ints={1}", i, ints[i]);
                }
            }
  • 相关阅读:
    ArcMap和ArcGIS Pro加载百度地图
    智能家居系列之——WIFI小车
    关于GIS中Scale和Resolution的那些事儿
    git cherry-pick
    虚拟DOM与DOM diff
    变量提升
    如果判定 this 又混乱了,就从头再读一遍……
    js 高程 Array
    Js高程-DOM
    剑指 Offer 15. 二进制中1的个数
  • 原文地址:https://www.cnblogs.com/kikyoqiang/p/9873275.html
Copyright © 2011-2022 走看看