Foxtable(狐表)用户栏目专家坐堂 → 退出for each


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

主题:退出for each

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


加好友 发短信
等级:婴狐 帖子:19 积分:248 威望:0 精华:0 注册:2013/6/29 9:28:00
退出for each  发帖心情 Post By:2013/7/9 11:20:00 [只看该作者]

 For Each  dcs As DataCol  In DataTables("交换机").DataCols
            For Each drs As DataRow  In DataTables("交换机").DataRows
                Dim str1 As String = drs(dcs)
                Dim str2 As String = e.Row("主机_有线MAC")
                Dim b As Boolean = str1.Contains(str2)
                If b = True Then
                    dr("交换机_IP地址") = drs("交换机_IP地址")
                    dr("交换机_主机名") = drs("交换机_主机名")
                    dr("交换机_端口")=dcs.name  
             
 Exit For
                    Exit For
                Else
                    dr("交换机_主机名")=Nothing
                    dr("交换机_IP地址")=Nothing
                    dr("交换机_端口")=Nothing
                End If
            Next
           
        Next
请问当if b=true成立时 想要退出全部for each循环 如何加代码 用exit for试了几次不能完全退出

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178530 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/7/9 11:21:00 [只看该作者]

那只是退出了第一重循环,你这有2重循环呢   可以考虑使用return 不过后面的代码就全部不会执行了哦

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


加好友 发短信
等级:婴狐 帖子:19 积分:248 威望:0 精华:0 注册:2013/6/29 9:28:00
  发帖心情 Post By:2013/7/9 11:22:00 [只看该作者]

能不能两次完全退出

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178530 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/7/9 11:26:00 [只看该作者]

你在同一个代码块内exit for两次没有用 上面一个执行后下面那个就没意义了.你可以使用一个变量 
dim b2 as boolean = false
For Each  dcs As DataCol  In DataTables("交换机").DataCols
     if b2 then
       exit for
     end if
            For Each drs As DataRow  In DataTables("交换机").DataRows
                Dim str1 As String = drs(dcs)
                Dim str2 As String = e.Row("主机_有线MAC")
                Dim b As Boolean = str1.Contains(str2)
                If b = True Then
                    dr("交换机_IP地址") = drs("交换机_IP地址")
                    dr("交换机_主机名") = drs("交换机_主机名")
                    dr("交换机_端口")=dcs.name  
                    b2=b
                    Exit For
                Else
                    dr("交换机_主机名")=Nothing
                    dr("交换机_IP地址")=Nothing
                    dr("交换机_端口")=Nothing
                End If
            Next
        Next

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2013/7/9 11:29:00 [只看该作者]

Dim i As Integer = 0

For Each  dcs As DataCol  In DataTables("交换机").DataCols
      For Each drs As DataRow  In DataTables("交换机").DataRows
            Dim str1 As String = drs(dcs)
            Dim str2 As String = e.Row("主机_有线MAC")
            Dim b As Boolean = str1.Contains(str2)
            If b = True Then
                 dr("交换机_IP地址") = drs("交换机_IP地址")
                 dr("交换机_主机名") = drs("交换机_主机名")
                 dr("交换机_端口")=dcs.name 

                 i + = 1              
                 Exit For
            Else
                 dr("交换机_主机名")=Nothing
                 dr("交换机_IP地址")=Nothing
                 dr("交换机_端口")=Nothing
            End If
       Next

       If  i > 0 Then
           Exit For

       End If
Next

[此贴子已经被作者于2013-7-9 11:32:09编辑过]

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2013/7/9 11:38:00 [只看该作者]

用整数比用逻辑,有个小小的优势:可以判断循环几次后退出,有时会有这种需求。

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


加好友 发短信
等级:四尾狐 帖子:810 积分:5250 威望:0 精华:0 注册:2009/2/6 10:38:00
  发帖心情 Post By:2013/7/9 14:27:00 [只看该作者]

以下是引用lsy在2013-7-9 11:29:00的发言:

Dim i As Integer = 0

For Each  dcs As DataCol  In DataTables("交换机").DataCols
      For Each drs As DataRow  In DataTables("交换机").DataRows
            Dim str1 As String = drs(dcs)
            Dim str2 As String = e.Row("主机_有线MAC")
            Dim b As Boolean = str1.Contains(str2)
            If b = True Then
                 dr("交换机_IP地址") = drs("交换机_IP地址")
                 dr("交换机_主机名") = drs("交换机_主机名")
                 dr("交换机_端口")=dcs.name 

                 i + = 1              
                 Exit For
            Else
                 dr("交换机_主机名")=Nothing
                 dr("交换机_IP地址")=Nothing
                 dr("交换机_端口")=Nothing
            End If
       Next

       If  i > 0 Then
           Exit For

       End If
Next

 
 
 
[此贴子已经被作者于2013-7-9 11:32:09编辑过]
 

Dim i As Integer = 3
i + = 1

Output.Show(i)

 

i + = 1 与 i = i +1 有什么区别

 
 


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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2013/7/9 14:33:00 [只看该作者]

作用没区别,少写一次变量。

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


加好友 发短信
等级:四尾狐 帖子:810 积分:5250 威望:0 精华:0 注册:2009/2/6 10:38:00
  发帖心情 Post By:2013/7/9 16:00:00 [只看该作者]

以下是引用lsy在2013-7-9 14:33:00的发言:
作用没区别,少写一次变量。

在通用筛选树的介绍中见过+=的格式,当时纯粹不明白,只是套用,在这儿见了,又测试了一下,结果一样。但还是没有理解这样写的意思,能介绍一下吗,以便今后的应用

[此贴子已经被作者于2013-7-9 16:00:27编辑过]

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2013/7/9 16:46:00 [只看该作者]

比尔.盖茨,说:这样子简洁一点,写起来省力一些,看起来舒服一节。

他老前辈都说到这份上了,咱们还不该捧捧场么?


 回到顶部