微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么.net委托分配运算符未将引用分配给原始委托?

如何解决为什么.net委托分配运算符未将引用分配给原始委托?

| 为什么copyOfDelegate是原始委托的副本,而不是原始委托的引用副本?
    public class DelegateTester
    {
        public delegate void PrintDelegate();

        public PrintDelegate PrintCallback;
    }

    public class Client
    {
        public void Print()
        {
            Console.WriteLine(\"in client\");
        }
    }



   static void main()     
   {  
      DelegateTester tester = new DelegateTester();
      Client client = new Client();

      tester.PrintCallback += new DelegateTester.PrintDelegate(client.Print);
      tester.PrintCallback += new DelegateTester.PrintDelegate(client.Print);

      // copy the delegate
      DelegateTester.PrintDelegate copyOfDelegate = tester.PrintCallback;
      tester.PrintCallback -= new DelegateTester.PrintDelegate(client.Print);

      tester.PrintCallback();
      copyOfDelegate.Invoke();
    }
    

解决方法

        我相信代表是一成不变的,所以您在哪里设置:
copyOfDelegate = tester.PrintCallback;
接着:
PrintCallback -= new DelegateTester.PrintDelegate(client.Print);
您实际上已经将原始委托实例分配给
copyOfDelegate
,然后由于不可变性而在分配给
Printcallback
时创建了一个新委托。     ,        代表像字符串一样是不可变的。这是一篇文章。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。