Foxtable(狐表)用户栏目专家坐堂 → [讨论]我试了一下帮助文件--集合 中的例子,不太理解。


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

主题:[讨论]我试了一下帮助文件--集合 中的例子,不太理解。

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


加好友 发短信
等级:五尾狐 帖子:1039 积分:7450 威望:0 精华:0 注册:2008/8/31 22:52:00
[讨论]我试了一下帮助文件--集合 中的例子,不太理解。  发帖心情 Post By:2008/9/11 22:19:00 [只看该作者]

Dim Lst As New List(Of String()) '定义一个字符型数组集合。
Dim Ary1(1) As String Dim Ary2(1) As String
Lst.Add(Ary1) '将数组加到集合中。
Lst.Add(Ary2)
Ary1(0) = "a"
Ary1(1) = "b"
 Ary2(0) = "1"
 Ary2(1) = "2" '注意循环变量是字符型数组,所以类型是String(),而不是String
For Each uu As String() In Lst
 For i As Integer = 0 To Ary1.Length - 1
 Output.Show(Ary2(i))
 Next
Next    ‘注意:我修改了一下帮助原文 for each 后面的几个变量,如“uu”、“ary1”、“ary2”

执行结果是:
1
2
1
2
这个结果表示:Ary2数组中的内容循环显示了两次,但是 “For i As Integer = 0 To Ary1.Length - 1”只定义了显示从0、1两个要素 不理解啊!
[此贴子已经被作者于2008-9-11 22:22:00编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1039 积分:7450 威望:0 精华:0 注册:2008/8/31 22:52:00
  发帖心情 Post By:2008/9/11 22:30:00 [只看该作者]

说实话,我不知道编程时在什么地方可能会用上集合。

确实水平太有限了。
图片点击可在新窗口打开查看

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


加好友 发短信 F6
等级:狐精 帖子:3036 积分:19223 威望:0 精华:2 注册:2008/9/1 7:50:00
  发帖心情 Post By:2008/9/12 7:54:00 [只看该作者]

注意以下的更改,其他不变
 For i As Integer = 0 To uu.Length - 1
 Output.Show(uu(i)) 
 
 

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


加好友 发短信
等级:五尾狐 帖子:1039 积分:7450 威望:0 精华:0 注册:2008/8/31 22:52:00
  发帖心情 Post By:2008/9/12 8:32:00 [只看该作者]

按 kylin 的意思修改一下,计算结果可以理解。

但为什么像一楼那样,其计算结果为:





我不能理解。

我学习过程中,我会改一下帮助文件例子中的一些变量,观察计算结果,以理解各种属性、方法的意义。


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2008/9/12 8:36:00 [只看该作者]

输出的是Ary2的内容,结果是1和2
你改了变量名,后面引用该变量的地方也要改。
[此贴子已经被作者于2008-9-12 8:37:54编辑过]

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


加好友 发短信 F6
等级:狐精 帖子:3036 积分:19223 威望:0 精华:2 注册:2008/9/1 7:50:00
  发帖心情 Post By:2008/9/12 9:50:00 [只看该作者]

在老六的基础上进一步说明
For Each uu As String() In Lst 这一句的目的是为了数组集合的每一个元素
 For i As Integer = 0 To Ary1.Length - 1  这一句从逻辑上应当是针对上一句的uu才可以
  Output.Show(Ary2(i))  这一句的意思是要求程序显示数组Ary2的内容,当然没有办法显示Ary1的内容。实际上所要的是uu中每一个元素中的每一个值即uu(i)

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


加好友 发短信
等级:五尾狐 帖子:1039 积分:7450 威望:0 精华:0 注册:2008/8/31 22:52:00
  发帖心情 Post By:2008/9/12 10:07:00 [只看该作者]

For i As Integer = 0 To Ary1.Length - 1
 Output.Show(Ary2(i))
 Next


我是这样理解的:For i As Integer = 0 To Ary1.Length - 1  表示 i取0、1 (ary1只有两个要素),  
        那么Output.Show(Ary2(i)) 也只应显示两个结果,而不是4个!

不理解结果为什么是4个。

在这个语句里,上面和下面的变量名必须一致吗?(ary1和ary2、uu)
[此贴子已经被作者于2008-9-12 10:08:11编辑过]

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


加好友 发短信 F6
等级:狐精 帖子:3036 积分:19223 威望:0 精华:2 注册:2008/9/1 7:50:00
  发帖心情 Post By:2008/9/12 11:16:00 [只看该作者]

别忘了For Each uu As String() In Lst 是在你的For i As Integer = 0 To Ary1.Length - 1 之外圈,也是包含2个数组,也是循环两次。小学算式2*2=4

如你的需要只要2个的话,For Each uu As String() In Lst 与外圈的Next就变得没有意义了,大可以去掉。

上面和下面的变量名是否必须一致?看你的动作目标与逻辑了。
逻辑肯定是编码的基础,混乱了,到时候出现问题,很难改的。

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


加好友 发短信
等级:五尾狐 帖子:1039 积分:7450 威望:0 精华:0 注册:2008/8/31 22:52:00
  发帖心情 Post By:2008/9/12 11:22:00 [只看该作者]

是有点混了。

FOR each 要求遍历所有的内容(4个),但后面的只选择了ARY2(2个要素),  for next  中又按ARY1 取值。

不过,我是故意混着的,观察规律。

图片点击可在新窗口打开查看


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


加好友 发短信 F6
等级:狐精 帖子:3036 积分:19223 威望:0 精华:2 注册:2008/9/1 7:50:00
  发帖心情 Post By:2008/9/12 11:31:00 [只看该作者]

原来是故意的!?

FOR each  要循环2次
For i  也要循环2次
过程大致描述一下:
FOR each  第一次,For i  从0-1循环了2次,也就是遍历ARY2所有内容(2个)
FOR each  第而次,For i  还是从0-1循环了2次,也就是重新遍历ARY2所有内容(2个)
一共遍历2次ARY2所有内容(即4个)

能明白?没有“混”吧。


 回到顶部