 悬赏:4 学分                        
                    		
                            《C#从入门到精通(第4版)》第17章  面向对象技术高级应用
悬赏:4 学分                        
                    		
                            《C#从入门到精通(第4版)》第17章  面向对象技术高级应用                                                	
                        
                        
                    第一种情况:
public delegate void MyDelegate();
public class MyClass1
{
public event MyDelegate myDelegate = null;
public void MyFun1()
{
Console.WriteLine("Test");
}
public void MyFun2()
{
myDelegate = new MyDelegate(MyFun1);
}
public void MyFun3()
{
myDelegate.Invoke();
}
}
MyClass1类内直接定义myDelegate成员,因此可以在MyClass1类内使用“=”操作myDelegate成员,也可以调用nvoke函数,这是合理的。
第二种情况:
public delegate void MyDelegate();
public class MyClass1
{
public event MyDelegate myDelegate = null;
}
public class MyClass2 : MyClass1
{
public void MyFun1()
{
Console.WriteLine("Test");
}
public void MyFun2()
{
myDelegate = new MyDelegate(MyFun1); //报错
}
public void MyFun3()
{
myDelegate.Invoke(); //报错
}
}
MyClass2类内没有直接定义myDelegate成员,而是通过继承MyClass1类来继承myDelegate成员。此时却不能在MyClass2类内使用“=”操作myDelegate成员,也不能调用nvoke函数,否则编译器会报错。两种情况同样都拥有事件成员myDelegate,为何有此差别。

 
	
                                                 VIP会员
VIP会员 购物车
购物车

 私信
                         私信 
                     发表新帖
发表新帖 立即签到
立即签到 
        		  
        		 
         		 关注
关注
                  回复
 回复 支持(
                	支持( 反对(
                    反对(
 
               			  
                







 
                     
                     
					 
						 
						 
						 
						