Foxtable(狐表)用户栏目专家坐堂 → 集合用法


  共有2929人关注过本帖树形打印复制链接

主题:集合用法

帅哥哟,离线,有人找我吗?
天宇科技
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:471 积分:4014 威望:0 精华:0 注册:2018/5/13 15:18:00
集合用法  发帖心情 Post By:2020/2/29 17:17:00 [只看该作者]

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

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

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

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106097 积分:539590 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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、直接赋值也不一定就有值,时也有可能是空值,因为直接赋值依赖=号右边的代码运行结果,如果结果是空值,那么直接赋值后这个变量也是空值,因此我们往往需要进行判断。

 回到顶部
帅哥哟,离线,有人找我吗?
天宇科技
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:471 积分:4014 威望:0 精华:0 注册:2018/5/13 15:18:00
  发帖心情 Post By:2020/2/29 18:10:00 [只看该作者]

谢谢蓝版,帮助中我没有看到这些讲解呢?

 回到顶部
帅哥哟,离线,有人找我吗?
天宇科技
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:471 积分:4014 威望:0 精华:0 注册:2018/5/13 15:18:00
  发帖心情 Post By: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
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2180 积分:13804 威望:0 精华:2 注册:2012/2/25 10:59:00
  发帖心情 Post By:2020/2/29 20:16:00 [只看该作者]

定义了Products,后面直接执行
Products DataTables("产品").GetValues("产品名称")
这就是直接赋值


 回到顶部
帅哥哟,离线,有人找我吗?
天宇科技
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:471 积分:4014 威望:0 精华:0 注册:2018/5/13 15:18:00
  发帖心情 Post By:2020/2/29 21:03:00 [只看该作者]

哦。我以为在变量后面才是直接赋值呢

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106097 积分:539590 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/1 19:55:00 [只看该作者]

以下是引用天宇科技在2020/2/29 18:10:00的发言:
谢谢蓝版,帮助中我没有看到这些讲解呢?

这些是编程语言的特性,foxtable帮助只是针对foxtable的使用说明,如果要涉及到方方面面的帮助都写出来,这个帮助文档大小估计要按G来算。 扩展的知识有兴趣自己网上学学vb.net。

 回到顶部
帅哥哟,离线,有人找我吗?
kgdce
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:620 积分:6776 威望:0 精华:0 注册:2013/12/17 1:00:00
  发帖心情 Post By:2020/6/25 11:09:00 [只看该作者]

学习,加new就是有了空对象,可以直接用了。不加new,就是什么都没有,只是空值,可以直接赋值。
如对数组,dim s() as string ={1,2,3}

 回到顶部