c# 对象引用对于非静态的字段、方法或属性“Control.Show()”是必需的

首先要弄清楚对象和实例的关系,比如你创建了一个窗体类Form1,这只是一个类,它是一个对象,但它在没有实例化之前,在内存中是不存在的,也就是说类Form1表示我是一个窗体图纸,但还没有实际生产出来
使用Form1 frm = new Form1()以后,创建了一个实际存在的窗体frm,也就是创建了Form1类的一个实例frm,这个时候frm.Show()就可以显示出你创建的那个Form1窗体类的实例frm,实例frm窗体的样子就是Form1类的窗体的样子,因为frm是Form1的实例。
这时如果你又创建了另一个窗体类Form2,使用Form2 frm2 = new Form2(),这样创建的窗体实例frm2就是窗体类Form2的实例,frm2.Show()显示出来的样子就是Form2窗体类的那个样子,因为frm2是Form2窗体类的实例。
 

与VB的区别

之前使用VB做过课设,再用VS中的C#可视化时就很困惑,一直出bug不知道该怎么用,这是因为两个工具中的新建窗体的含义不同,VB中点击新建一个窗体,创建的这个窗体就是一个实例,写代码不需要写new语句,只需要调用这个窗体的show方法就可以显示新创建的这个窗体实例(比如vb中点击新建了一个窗体frm,代码中只需要写frm.show();即可显示该窗体,窗体frm就是一个实例);而VS中C#的.net项目里点击新建一个窗体,创建的这个窗体是一个类,一个对象,不是一个实例,在代码里需要写new语句才是在你这个程序里创建了一个这个类的窗体实例,然后使用show方法可以显示出这个窗体实例,需要注意一切操作都是对这个实例进行操作,调用的方法都是这个实例的方法。

你可能感兴趣的:(hello,bug)