我定义了一个接 ICommand,里面有几种方法,我在它的几个派生类里分别实现了,现在问题是,我在测试代码中,测试时碰到了问题,
private ICommand aCommand ;
private CCreateLine creLine = new CCreateLine();//CCreateLine 是继承了ICommand 接的类
用下面这个方法:
private void menuItem2_Click(object sender, System.EventArgs e)
{
aCommand = creLine;
}
就会报错:“ 未将对象引用设置到对象的实例。”
但是我在窗体的Lode事件中写,如下:
private void Form1_Load(object sender, System.EventArgs e)
{
aCommand = creLine;
}
则可以顺利运行。注:我是想通过不同的Click事件来设置不同的aCommand的值,比如:
private void menuItem3_Click(object sender, System.EventArgs e)
{
aCommand = creCircle;//creCircle也是一个实现了aCommand 接口的类的实例
}请问高手,这是什么问题,该如何解决?

解决方案 »

  1.   

    aCommand 有没有被你null掉`~~~ or Dispose()
      

  2.   

    报错:“ 未将对象引用设置到对象的实例。”多是出现在变量重声明or未被初始化or对象资源未清除
      

  3.   

    private ICommand aCommand ;接口不能实例话的
      

  4.   

    aCommand 没有被null掉`~~~ or Dispose(),
    我仔细想了一下,private ICommand aCommand,这样是不是只声明了这个接口,并没有实例化,而下面的这个方法才将它实例化了
    private void menuItem2_Click(object sender, System.EventArgs e)
    {
    aCommand = creLine;
    }
    因为我重写了窗体的OnMouseDown事件,所在窗体初始化的过程中就执行了含有aCommand 的指令,然而aCommand 它本身却没有实例化,但是如果在窗体的Lode事件将它实例化的话,那么它可以执行了!
    不知道这样想对不对?
      

  5.   

    private void menuItem2_Click(object sender, System.EventArgs e)
    {
    aCommand = creLine;
    }
    这里不会报错,可能是你以后的调用出错。