在高级语言编程中,一般不允许相同的变量名的存在。在面向对象的编程思想中,变量分为全局变量、静态变量、动态变量,除了全局变量外,其他的变量都有其作用域,不同的作用域下变量可以重名。在.NET中,表现为命名空间,只要从根命名空间开始到变量名的一系列引用不全相同,那么这样的变量是不同的变量。你的意思我不是很明白。C#是不允许重复定义同一个变量的,如果按照你的说法,应该是你定义了一次变量,然后为使用这个变量创建了10个MDI:
frmF frm;
frm=new frmF();
frm=new frmF();
frm=new frmF();
frm=new frmF();
frm=new frmF();
frm=new frmF();
frm=new frmF();
frm=new frmF();类似于这样,这是允许的。特别是在.NET中,因为有了托管的概念,我们new出来的对象不需要我们明确的delete。但从你的代码来看,frmF frmF是错误的,因为frmF作为类名是不能再作为变量名了,除非你使用名称空间限制。

解决方案 »

  1.   

    frmF frm;
    frm=new frmF();
    frmF frm;
    frm=new frmF();
    frmF frm;
    frm=new frmF();
    frmF frm;
    frm=new frmF();
    frmF frm;
    frm=new frmF();
    frmF frm;
    frm=new frmF();
    frmF frm;
    frm=new frmF();
    frmF frm;
    frm=new frmF();
    frmF frm;
    frm=new frmF();
    frmF frm;
    frm=new frmF();
    frmF frm;
    frm=new frmF();是这样啊!
      

  2.   

    wwxc18(蝸牛小混混)
    frmF frm;
    frm=new frmF();
    frmF frm;
    frm=new frmF();
    这样会出现编译时错误。
      

  3.   

    frmF frmF=new frmF();
    frmF frmF=new frmF();
    frmF frmF=new frmF();
    frmF frmF=new frmF();
    frmF frmF=new frmF();
    frmF frmF=new frmF();
    frmF frmF=new frmF();
    frmF frmF=new frmF();
      

  4.   

    如果把
    FrmF frmF=new FrmF();
    FrmF.MdiParent=this;
    FrmF.Show();
    放在button_Click()中是可以的。
    而对于用代码中使用这样的重名窗口有没有问题就尚不清楚噢
      

  5.   

    如果你编译不出错的话应该是可以的。
    你只不过不停的对frmF换新的窗体而已,而前一个窗体的句柄已经被父窗体保存了,所以不会被释放掉。你也可以从父窗体的属性里找到前面的窗体。
      

  6.   

    1979xt(就是天使.NET) : 不会被回收掉。不知你注意看过向导生成的Windows应用程序没有,那里也没有保存窗体的引用,子窗体创建后,就可以通过
    foreach(Form frm in this.MdiChildren)进行遍历。换句话说,已经有引用指向了同一个托管对象,因此不会被回收掉。