扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
格式就是set A= new [object]
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:国际域名空间、网页空间、营销软件、网站建设、卧龙网站维护、网站推广。
比如创建的是系统已有基类的新对象,那就直接使用语句
例如:在一个过程中:
private sub ...
set a = new ADODB.Connection(这是一个用来连接数据库的对象)
...
end sub
你只要输入到new的地方,就会出来自动匹配下拉列表,你可以看见你可以创建哪些可用对象。
如果是自定义的对象,就必须先建立类
要添加类模块创建类
比如类模块Class1.cls
那么在需要引用类中函数时你需要创建这个类的实例对象 set a as new Class1
找个例子自己练习一下就很容易弄清楚了
VB最终的版本是VB6.0。微软早都不支持了。在Win7上VB6.0是可以用的,但是之前在XP下写好的VB程序有些可能会不能用,原因是WIN7中取消了许多之前的DLL。
VS2012上就是VB.Net了,语法和VB类似。
VB6.0是面向过程开发,VB.net是面向对象开发,但是是为了照顾VB6.0程序员的开发习惯,所以有点不伦不类。
在VB 2008当中,配合LINQ新增了许多新的语法,底下这也是VB在建立对象时的新写法:
Dim stud1 As New students With {.name = "David", .score = 100}
上述指令会建立一个students 对象的实体,并且填入默认的值。
这样的写法简便不少,该对象的类声明如下:
Public Class students
'这边应该写成property, 只是我稍微偷懒一下写成field,不影响demo
Public name As String
Public score As Single
End Class
上面黄色程序代码这样的方式我们称之为命名类型的对象声明,既然,有命名类型,就一定会有匿名类型的声明方式,语法如下:
Dim stud2 = New With {.name = "David", .score = 100}
这个就炫了吧,不用类型照样可以声明出一个对象实体,这个在VB 2008称为匿名类型,其实和LINQ有相当大的关系,干嘛搞出一个匿名类型呢? 它可以方便我们不需要事先建立一个类,就可以具有对象实体,会有这样的需求?
某些时候,我们只想要产生一个对象,并且随手就拿来用了,我们可能懒的声明一个对象的类,然后再用New指令产生一个对象实体,也有时候我们只是希望建立一个临时的对象来存放特定数据处理(查询)之后的结果,最典型的例子就是LINQ(之后再述),因此匿名类型就应运而生了。
匿名类型并不特别也不神奇,实现的方式很简单,Compiler 会自动依照你的需要,帮您建立一个类Class,帮你自动决定类中属性的型态。这个自动建立的类没有名称(因为是编译阶段自动建立的,所以没名称也不要紧,反正我们在程序代码当中也不会用到这个类,只会用到这个类产生的对象实体)、这个类会直接继承自 Object,并且包含您在声明对象时指定的属性。
这个特性是一个基础,它让LINQ查询的结果可以自动建立成一个对象,例如我们在介绍的LINQ功能中,有一段程序代码:
Structure BMI
Dim name As String
Dim height As Integer
Dim weight As Integer
Dim BmiValue As Single
End Structure
Dim matrix(5) As BMI
(……略……)
'查询BMI值大于25的人
Dim result = From c In matrix Where c.BmiValue 25
其中matrix是一个对象没有错,但是result是什么类型? 怎么出现的? LINQ查询会建立出一个对象? 怎么建立的呢? 关键就在匿名类型。
有了匿名类型这样的技术作为基础,LINQ的查询结果(对象)就可以不需要事先建立一个特定类作为存放查询结果的数据类型。而可以通过编辑器自动产生这个类,我们只需要直接把结果(对象)拿来用,因为我们在意的是这个查询结果对象而非该类本身。
不过这边要注意,并非所有的LINQ查询结果一定就需要建立一个匿名类型来存放,也有可能只需要系统内建的类型即可。
例如:
Dim result = From c In matrix Where c.BmiValue 25 Select c.name
result 就只需要String类型即可。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流