首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

小朋友们惊呆了,方法BeginReceive很吊诡

2013-11-01 
小伙伴们惊呆了,方法BeginReceive很吊诡在使用方法BeginReceive时,将本应传入AsyncCallback实例的地方,直

小伙伴们惊呆了,方法BeginReceive很吊诡
在使用方法BeginReceive时,将本应传入AsyncCallback实例的地方,直接用一个方法填进去(这个方法参数类型符合要求),程序运行得很好!

1.正确的方法:
public   void   OnRecievedData(   IAsyncResult   ar   )   
        {   
          .......
            
        } 

                    AsyncCallback   recieveData   =   new   AsyncCallback(OnRecievedData);                  
                    m_sock.BeginReceive(   m_byBuff,   0,   m_byBuff.Length,   SocketFlags.None,   recieveData,   this   );   
                }   
2.采用这个方法传参,程序不报错,而且能运行,最奇怪的是,看不出有什么出别!
 m_sock.BeginReceive(   m_byBuff,   0,   m_byBuff.Length,   SocketFlags.None,   OnRecievedData,   this   ); 

                  
[解决办法]
没区别,都是一样的,这只是C#语法糖,简化了编程,实际编译处理一样,建议用第二种写法,方便。
[解决办法]
编译器帮你完成了代码,你还有什么不爽的?
[解决办法]
就是 VS 帮你做了 new AsyncCallback 的操作

热点排行