白点疯 https://yiyuan.99.com.cn/bjzkbdfyy/bdfrq/yf/295250.html白点疯 https://yiyuan.99.com.cn/bjzkbdfyy/bdfrq/yf/295250.html大家好,我是华山自控编程的朱老师
前几天一个学员在学习C#与数据库交互时。创建数据库的时候,一直出现语法错误
截图如下:
不知道什么原因。
其实很多初学者在学习vs和数据库交互时,都会遇到类似的问题,不知道是动态库dataGridView1控件问题,还是代码问题。下面我们就对这个问题进行详细分析。
问题分析:
根据报错提示,字段初始值设定项无法引用非静态字段、方法或性
“Form1.dataGridView1”:
这个错误其实提示很清晰了。对于老司机来说,可能一下就知道问题点在哪里。但是对于新手来说,看到这个语法错误,还是会一筹莫展。不知道如何去定位问题。
接下来我就教该同学如何去定位和解决问题。
首先:我让该同学确定该变量是静态变量还是非静态变量:dataGridView1:单击该字段右键转到定义功能.如下图:
通过定义语句可以看出该字段是非静态变量:
到此,我们就知道怎么使用该变量了,根据非静态变量由非静态方法调用的原则。我们将该代码放到实例化的方法里面即可,比如窗体加载事件,按钮点击事件等等。如下图:
通过以上调试方法,该同学学会了C#使用静态变量和非静态变量的基本技能。
另外在衍生下c#静态变量和非静态变量的区别:
一、静态资源在首次访问时会调用静态构造器创建类类型对象(静态属于类,动态属于对象,静态被静态构造器创建,动态被普通构造创建,所以实例对象的时候,静态不会被重新构造)
二、类型对象的生存周期是整个应用程序域的生存周期,也就说被访问过的静态资源,只有它所在的应用程序域被卸载时才会被卸载,静态变量始终存在着,也就是说它的生存期为整个源程序。
三,当页面第一次被访问的时候,相当于页面被构造,静态变量被静态构造器初始化,然后再次访问这个页面的时候,虽然非静态资源重新被构造,但是此时静态资源并不被重新构造并一直存在(也可以用来做页面状态保持,不过不建议用,因为一直占用资源,不像session还定时被回收),直至应用程序域被回收。(构造类静态若局部未赋以初值,则由系统自动赋以0值。)
四、如果是application级的,用静态变量来代替application对象是可以的,优点是速度快(存储区域不同,而且不用装箱拆箱),缺点是没有application对象通用(application对象可以随意存储任何对象)
五、就是页面的静态变量页面第一次被访问时被初始化,在应用程序域一直保存,动态变量只在一个