• 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]);
                }
            }
  • 相关阅读:
    通过url在两个页面之间传值
    $.ajax数据传输成功却执行失败的回调函数
    5.26小测
    洛谷——AC记
    7.2模拟赛
    6.30模拟赛
    洛谷——每日一题
    洛谷——动态规划
    致创营
    BSGS
  • 原文地址:https://www.cnblogs.com/kikyoqiang/p/9873275.html
Copyright © 2020-2023  润新知