以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  退出for each  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=37712)

--  作者:sddcyj
--  发布时间:2013/7/9 11:20:00
--  退出for each
 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
--  发布时间:2013/7/9 11:21:00
--  
那只是退出了第一重循环,你这有2重循环呢   可以考虑使用return 不过后面的代码就全部不会执行了哦
--  作者:sddcyj
--  发布时间:2013/7/9 11:22:00
--  
能不能两次完全退出
--  作者:Bin
--  发布时间: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
--  发布时间: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
--  发布时间:2013/7/9 11:38:00
--  
用整数比用逻辑,有个小小的优势:可以判断循环几次后退出,有时会有这种需求。
--  作者:cxabc123
--  发布时间: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
--  发布时间:2013/7/9 14:33:00
--  
作用没区别,少写一次变量。
--  作者:cxabc123
--  发布时间:2013/7/9 16:00:00
--  
以下是引用lsy在2013-7-9 14:33:00的发言:
作用没区别,少写一次变量。

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

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

--  作者:lsy
--  发布时间:2013/7/9 16:46:00
--  

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

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