在高级语言编程中,一般不允许相同的变量名的存在。在面向对象的编程思想中,变量分为全局变量、静态变量、动态变量,除了全局变量外,其他的变量都有其作用域,不同的作用域下变量可以重名。在.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作为类名是不能再作为变量名了,除非你使用名称空间限制。
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作为类名是不能再作为变量名了,除非你使用名称空间限制。
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();是这样啊!
frmF frm;
frm=new frmF();
frmF frm;
frm=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();
FrmF frmF=new FrmF();
FrmF.MdiParent=this;
FrmF.Show();
放在button_Click()中是可以的。
而对于用代码中使用这样的重名窗口有没有问题就尚不清楚噢
你只不过不停的对frmF换新的窗体而已,而前一个窗体的句柄已经被父窗体保存了,所以不会被释放掉。你也可以从父窗体的属性里找到前面的窗体。
foreach(Form frm in this.MdiChildren)进行遍历。换句话说,已经有引用指向了同一个托管对象,因此不会被回收掉。