经过长时间学习VB NET局部静态变量 于是和大家分享一下 看完本文你肯定有不少收获 希望本文能教会你更多东西 VB NET能够实现很多C#不能做到的功能 如When语句 Optional参数 局部Static变量 对象实例访问静态方法 Handles绑定事件 On Error处理异常 Object直接后期绑定等等 VB和C#同属 NET的语言 编译出来的是同样的CIL 但为什么VB支持很多有趣的特性呢 我们一起来探究一下VB NET局部静态变量
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:国际域名空间、虚拟主机、营销软件、网站建设、芦溪网站维护、网站推广。
VB NET局部静态变量
VB支持用Static关键字声明局部变量 这样在过程结束的时候可以保持变量的数值
Public Sub Test () Static i As Integer i += 实现一个过程调用计数器 End Sub
我们实现了一个简单的过程计数器 每调用一次Test 计数器的数值就增加 其实还有很多情况我们希望保持变量的数值 而C#的static是不能用在过程内部的 因此要实现过程计数器 我们必须声明一个类级别的变量 这样做明显不如VB好 因为无法防止其他过程修改计数器变量 这就和对象封装一个道理 本来应该是一个方法的局部变量 现在我要被迫把它独立出来 显然是不好的设计 那么VB是怎么生成局部静态变量的呢?将上述代码返汇编 我们可以清楚地看到在VB生成的CIL中 i不是作为局部变量 而是作为类的Field出现的
field private specialname int $STATIC$Test $ $i
也就是说 i被改名作为一个类的字段 但被冠以specialname 在代码中试图访问$STATIC$Test $ $i是不可能的 因为它不是一个有效的标识符 但是在IL中 将这个变量加一的代码却与一般的类字段完全一样 是通过ldfld加载的 我觉得这个方法十分聪明 把静态变量变成生命周期一样的类字段 但是又由编译器来控制访问的权限 让它成为一个局部变量 同时也解释了VB为什么要用两个不同的关键字来声明静态变量—— Static和Shared
lishixinzhi/Article/program/net/201311/13413
VB.NET中的变量在使用前要进行声明。即便不进行显式声明,VB也会进行隐式声明。
本题中应该这样使用:
Dim a1 As String = TextBox1.Text
System.Diagnostics.Process.Start("IExplore.exe", a1)
变量是存储值的名称。可使用变量来存储数字,例如建筑物的高度,或者存储单词,例如人的名字。简单地说,可使用变量表示程序所需的任何信息。
你可能会问:“既然我可以使用信息,为什么要用变量?” 正如其名称所表示的,变量可以随着程序的运行而改变其表示的值。例如,您可以写一个程序来跟踪桌子上罐里的软心豆粒糖的数目。因为糖是要被吃掉的,所以罐里软心豆粒糖的数目可能会随着时间的推移而改变。您可以使用一个可随时间变化的变量来表示软心豆粒糖的数目,而无需在每次想吃糖时重新编写程序。
'用My.Computer.Registry
My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Environment", "变量名", "变量值")
dim 变量值 as string = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Environment", "变量名", "") '获取变量值
Imports ESRI.ArcGIS.Geodatabase
加在文件的开头,这样就会把IFeature 自动识别为ESRI.ArcGIS.Geodatabase.IFeature了。
ESRI.ArcGIS.Geodatabase是一个命名空间,里面有一个叫IFeature的类,ESRI.ArcGIS.Geodatabase.IFeature就是指这个类。如果你只写IFeature的话,编译系统就会认为你要用当前命名空间里的IFeature类,但它找不到这个叫IFeature的类,所以就会报错。
Imports就有这个功能,只写一遍命名空间名称,以后不用写命名空间名称就可以直接使用里面的各种类、常量、变量等等。