当前位置:编程学习 > C#/ASP.NET >>

看不懂这段代码中delegate?别笑我!

            int n = BtCom.BytesToRead;    
            Byte[] buf = new Byte[n];
            BtCom.Read(buf, 0, n);                  
            CPublecClass.G_ReceiveString.Clear();    
            this.Invoke((EventHandler)(delegate
            {
                CPublecClass.G_ReceiveString.Append(Encoding.ASCII.GetString(buf));
                string temp = CPublecClass.G_ReceiveString.ToString();
                BtReceiveBuff.AppendText(temp);
            }));


上面的这段小代码是串口通讯程序中数据监听线程使用委托的方法修改主线程UI的代码。功能都实现了,但是有些看不懂中间的
delegate
            {
                CPublecClass.G_ReceiveString.Append(Encoding.ASCII.GetString(buf));
                string temp = CPublecClass.G_ReceiveString.ToString();
                BtReceiveBuff.AppendText(temp);
            }
我知道这是个委托,但是很费解,这个是定义了一个匿名函数么??那么delegate后面不是应该有个()么?  看形式也不是lambda表达式啊!翻看了入门经典和高级编程都没看到过这种写法,谁给解释下啊? --------------------编程问答-------------------- 我也没懂,省略了吧,我一般都用lambda表达式,()=>{},这个语法看着要清楚些,也好用 --------------------编程问答-------------------- --------------------编程问答-------------------- 这是一个匿名委托,没有参数可以简写掉()

只是这样节省笔墨的确罕见。 --------------------编程问答-------------------- 这样写,委托前面的(EventHandler)的类型转换应该不可省略,反之则可以(LZ可以试试)
正如 Thread t = new Thread((ThreadStart)delegate{Console.WriteLine("OK");})此时(ThreadStart)不可以省略,否则这样写:Thread t = new Thread(delegate(){Console.WriteLine("OK");})
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,