以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  集合用法  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=146707)

--  作者:天宇科技
--  发布时间:2020/2/29 17:17:00
--  集合用法
Dim 集合名称 As New List(Of 数据类型)

Dim 集合名称 As  List(Of 数据类型)

是一样的吗?我看帮助中有些用了“new”,有些地方又没有用?,这两种用法完全一样吗?

--  作者:有点蓝
--  发布时间:2020/2/29 17:38:00
--  
变量的初始化一般有2种方式:
1)使用new关键字初始化一个空对象,如:Dim Names As New List(Of String)

注意这里的空对象不是空值。空值是什么都没有,对象本身还不存在;空对象是这个对象已经存在了,只是里面的属性还是空的。以上面的代码为例,Dim Names As List(Of String)如果这样用,Names就是空值,如果使用就会出错。Dim Names As New List(Of String)这样用,Names就是一个空的集合对象,只是集合本身没有任何元素,但是我们可以使用这个变量,对集合进行添加删除等等操作。

2)直接赋值,如:Dim drs As List(Of DataRow) = DataTables("订单").Select("[产品] = \'PD01\'")

drs就是一个DataRow类型的集合类型对象实例。

注意:
a、直接赋值时不能使用new关键字,这样就是错的:Dim drs As new List(Of DataRow) = DataTables("订单").Select("[产品] = \'PD01\'")

b、直接赋值时可以省略类型指定,如:Dim drs = DataTables("订单").Select("[产品] = \'PD01\'"),这时drs的类型就由后面赋值代码的返回值限定。又如:Dim i = 0表示变量i是整型;Dim i = "0"表示变量i是字符型,存储的是字符0而不是整数0。

但是我们建议还是在定义变量的时候指定类型,这样使代码更清晰和容易理解。最主要的是,如果没有指定类型,狐表的代码编辑器就无法显示精灵提示。

c、直接赋值也不一定就有值,时也有可能是空值,因为直接赋值依赖=号右边的代码运行结果,如果结果是空值,那么直接赋值后这个变量也是空值,因此我们往往需要进行判断。

--  作者:天宇科技
--  发布时间:2020/2/29 18:10:00
--  
谢谢蓝版,帮助中我没有看到这些讲解呢?
--  作者:天宇科技
--  发布时间:2020/2/29 18:15:00
--  
Dim Products As List(Of String)
Products = DataTables("产品").GetValues("产品名称")
For
Each Product As String In Products
Output.Show(Product)

Next

这儿不是直接 赋值,也没有用new

--  作者:sloyy
--  发布时间:2020/2/29 20:16:00
--  
定义了Products,后面直接执行
Products DataTables("产品").GetValues("产品名称")
这就是直接赋值


--  作者:天宇科技
--  发布时间:2020/2/29 21:03:00
--  
哦。我以为在变量后面才是直接赋值呢
--  作者:有点蓝
--  发布时间:2020/3/1 19:55:00
--  
以下是引用天宇科技在2020/2/29 18:10:00的发言:
谢谢蓝版,帮助中我没有看到这些讲解呢?

这些是编程语言的特性,foxtable帮助只是针对foxtable的使用说明,如果要涉及到方方面面的帮助都写出来,这个帮助文档大小估计要按G来算。 扩展的知识有兴趣自己网上学学vb.net。
--  作者:kgdce
--  发布时间:2020/6/25 11:09:00
--  
学习,加new就是有了空对象,可以直接用了。不加new,就是什么都没有,只是空值,可以直接赋值。
如对数组,dim s() as string ={1,2,3}