1.public delegate void OnDBOperate(); 
public class UserControlBase : UserControl 

    public event Operate OnNew; 
    private void toolBar_ButtonClick(object sender,EventArgs e) 
    { 
        if(e.Button.Equals(BtnNew)) 
        { 
           //请在以下补齐代码用来调用触发OnNew事件。            
           --------;(1分)
           --------  ;(1分)
        } 
    } 
}
2.
class A{
        public void SayHello(){
            Console.WriteLine("Hello, I'm {0}.", this.GetType().ToString());
        }
    }
    class B:A{}
    class C:B{}
class D{}public void PrintA(){
    ArrayList list = new ArrayList();
list.Add(new A());
    list.Add(new B());
    list.Add(new C());
    list.Add(null);
    list.Add(new D());     foreach (object obj in list){
      //判断是否为A的子类
          bool isA =  ————————————           (2分)
          if (isA){
               A a = (A)obj;
               a.SayHello();
           }
      }
}

解决方案 »

  1.   

    第二道题我写的答案是:bool isA = (obj==null? false:((obj.GetType()).IsSubclassOf(list[0].GetType())));,应该没错吧?
    第一道题不会做啊,怎么跟我之前看到的委托不一样啊
      

  2.   

    委托没学好
    第二道题 bool isA = obj is A
      

  3.   

    1. 我觉得应该是
    if (OnNew != null)
        OnNew(sender, s);
      

  4.   

     OnNew(sender, s);
    请问一下,你的s从哪里来?怎么没看到定义?
    应该是 OnNew(sender, e);
      

  5.   

    第二道题:bool isA = (obj==null? false:((obj.GetType()).IsSubclassOf(list[0].GetType())));
    可以换成bool isA = (obj==null? false:((obj.GetType()).IsSubclassOf(new A().GetType())));
    吧???
      

  6.   

    谢谢你的回答。
     1.bool isA = obj is A 有is这个语法吗?我怎么看起来is A 像算法,这里要填的是程序哦
    2.我怎么觉得第一题你的回答,完全没有用到public delegate void OnDBOperate();这个委托,会不会答案里面有OnDBOperate这个?
      

  7.   


    第一题,估计你写错了
    public event Operate OnNew; 
    应该是
    public event OnDBOperate OnNew; 参考
    http://msdn.microsoft.com/zh-cn/library/8627sbea(v=vs.80).aspx第二题
    参考
    http://msdn.microsoft.com/zh-cn/library/scekt9xw.aspx
      

  8.   

    第一道题好像不能用is哦(下面的代码可以确定对象是否为 MyObject 类型的一个实例,或者对象是否为从 MyObject 派生的一个类型,is把A自身也包括进去了)
    我的测试如下:
    用is的结果:
    Hello, I'm ConsoleApplication1.A.
    Hello, I'm ConsoleApplication1.B.
    Hello, I'm ConsoleApplication1.C.
    请按任意键继续. . .
      

  9.   

    不用is,用我的那个方法结果如下:
    Hello, I'm ConsoleApplication1.B.
    Hello, I'm ConsoleApplication1.C.
      

  10.   

    e.Button 这个Button是哪来的?第二题 在2.0及以上版本用is 如果A不算的话 额外加 && typeof(A)!=obj.GetType() 就可以了
      

  11.   

    不清楚,是面试题的一道程序填空,最后弱弱的问一下就结贴了:在程序里面,我new A()然后最先放进list里面,当我用list[0]读出第一个跟直接再new是不是一样的?像我第7楼问的问题一样,虽然结果好像是一样的
      

  12.   

    new A().GetType()
    ->
    typeof(A)这么写效率高当我用list[0]读出第一个跟直接再new是不是一样的
    ------------------------------------------
    不一样,是同一类型的不同实例但#7写的是等价的,因为类型一样。
      

  13.   

    如果你没记错的话,那就是面试的问题。但有可能 那个e 的类型是派生自 EventArgs 的但肯定不会是 EventArgs 
      

  14.   

    恩恩,谢谢,最后弱弱的问一下就结贴了
    第二道题:bool isA = (obj==null? false:((obj.GetType()).IsSubclassOf(list[0].GetType())));
    换成bool isA = (obj==null? false:((obj.GetType()).IsSubclassOf(new A().GetType())));
    结果好像是一样的,问一下new A()所得到的东西是不是就是list[0]里面存得
      

  15.   

    恩,应该是public delegate void OnDBOperate(); 
    -----------》public delegate void Operate();