VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > VB.net教程 >
  • vb.net教程之分支

 分支

在程序设计中,条件语句能够根据表达式的值来决定代码的执行流程。在VB.NET中,条件分支语句有两种:If/Then/Else语句和Select/Case语句。

1. If/Then/Else语句

If/Then/Else语句是最常用的条件语句。它的基本形式是:
If condition Then statements1 [Else statements2 ]
它表示:如果condition为True,那么就执行statements1;否则执行statements2。
例2.4(4.aspx)根据时间显示问候信息。
1:  <%
2:       If Hour(Now)<12 Then Response.Write ("Good morning! Cindy!")
3:       If Hour(Now)=12 Then Response.Write ("Good noon! Cindy!")
4:                 If (Hour(Now)>12 And Hour(Now)<18) Then Response.Write ("Good afternoon! Cindy!")
5:       If Hour(Now)>=18 Then Response.Write ("Good evening! Cindy!")
6:  %>
在上面的例子中,函数Hour()是对给出的日期时间求它的小时数,Now函数用于返回当前的日期和时间。程序根据当时的时间判定是上午、中午还是下午,分别给出问候信息。我们看到,这个写法很简单,但是这个程序为了显示一条问候信息,要对Hour(Now)取值4次并且执行4次比较才能完成,从效率上考虑并不好。
If/Then/Else语句还可以写成比较复杂的形式:
       If condition_1 Then
             statements_1
      [ElseIf condition_m Then
             statements_m
      [ElseIf  condition_n Then…]]
      [Else
statements_2]
End If
这个语句可以检测多个条件。第一种写法要求语句在写的时候要在一行中写完,例如例2.4 的第2行的If语句。这条语句也可以采用第二种方法来写,方法如下:
If Hour(Now)<12 Then
Response.Write ("Good Morning!Cindy!")
End If
建议用户采用后一种写法,因为这种方法更结构化,可读性好。当用户在调试大型软件的代码时,会发现,虽然看起来多写了几行语句,但好处却是很大的。
例2.5(5.aspx)根据时间显示问候信息。请注意这个例子的写法与上个例子中的写法在执行效率上的区别。
1:    <%
2:           If Hour(Now)<12 Then
3:                  Response.Write ("Good morning! Cindy!")
4:           ElseIf Hour(Now)=12 Then
5:                  Response.Write ("Good noon! Cindy!")
6:           ElseIf Hour(Now)>=18 Then
7:                  Response.Write ("Good evening! Cindy!")
8:           Else
9:                  Response.Write ("Good afternoon! Cindy!")
10:         End If
11:  %>
上面的例子在执行的过程中,对于当前不同的时间,为了显示问候信息,执行的Hour(Now)的取值和比较的次数是不一样的:最少只要1次,最多需要3次。从效率上看,比例2.4要好。

2. Select/Case结构

当程序中的条件比较复杂,而且是根据同一个表达式的不同值执行不同操作的时候,用If/Then/Else语句来写就显得十分烦琐。这时可以考虑采用Select/Case结构来完成条件语句。
Select/Case结构为:
Select Case testexpression
  Case condition_1
         statements_1
  [      …
  Case Else
         statements_n]
      End Select
例2.66.aspx)用Select/Case语句来实现问候信息的显示。
1:    <%
2:           Select Case  Hour(Now)
3:                  Case 0,1,2,3,4,5,6,7,8,9,10,11
4:                         Response.Write ("Good morning! Cindy!")
5:                  Case 12
6:                         Response.Write ("Good noon! Cindy!")
7:                  Case 13,14,15,16,17
8:                         Response.Write ("Good afternoon! Cindy!")
9:                  Case Else
10:                       Response.Write ("Good evening! Cindy!")
11:         End Select
12:  %>
很明显,用这种方法来显示问候信息要比用If/Then/Else语句清楚得多。
 

2.4  循环

VB.NET中的循环有三种形式:For/Next、While/End While、Do/Loop和For/Each。

1. For/Next循环

用For/Next循环可以精确地控制循环体的执行次数。For/Next循环的语法如下:
 For counter = startvalue To endvalue [Step stepvalue]
             [statements]
  [Exit For]
  [statements]
Next
其中,用Step关键字可以定义循环计数器的增长方式,stepvalue的值(可正可负)来适应各种不同的需求。Exit For语句允许在某种条件下直接退出循环体。
例2.7(7.aspx)用For/Next语句来实现显示二维数组的内容。
1:    <%
2:           Dim arrData(1,2)
3:           Dim intI,intJ as Integer
4:           arrData(0,0)=12
5:           arrData(0,1) =13
6:           arrData(0,2) =14
7:           arrData(1,0) =15
8:           arrData(1,1) =16
9:           arrData(1,2) =17
10:         For intI=0 To 1
11:                For intJ=0 To 2
12:                       Response.Write (arrData(intI,intJ) & " ")
13:                Next
14:         Response.Write ("<br>")            
15:         Next
16:  %>

 

2. While/End While 循环

While/ End While语法如下:
      While condition
              [statements]
      End While
由于在进入循环体之前会遇到检测条件,所以如果这个时候condition的值为False,那么While/ End While循环的循环体有可能一次也不能执行。
例2.8(8.aspx)显示3次问候信息。
1:    <%
2:           Dim intI as Integer
3:           IntI=0
4:           While intI<3
5:                  Response.Write ("Hello! Cindy!" & "<br>")
6:                  IntI=intI+1
7:           End While
8:    %>

 

3. Do/Loop

同样,在不知道循环次数的情况下,也可以使用Do/Loop 循环。Do/Loop循环的作用与While/ End While十分相似。它的语法是:
      Do {While | Until} condition
              [statements]
              [Exit Do]
              [statements]
      Loop
其中,Do后面的While和Until是可选的。使用While时,后面的条件满足则执行循环体;使用Until时,后面的条件满足就退出循环体。Do/Loop循环还有另外一种写法:
      Do
              [statements]
              [Exit Do]
              [statements]
      Loop {While | Until} condition
这种写法的结果是:循环体在执行的时候至少会执行一次。
例2.9(9.aspx)显示3次问候信息。
1:    <%
2:           Dim intI
3:           IntI=0
4:           Do Until intI>2
5:                  Response.Write ("Hello! Cindy!" & "<br>")
6:                  IntI=intI+1
7:           Loop
8:    %>

 

4. For/Each

在某些特殊情况下,可以使用For/Each来实现对一个数组或集合中元素的遍历。
For/Each语句的写法如下:
For Each item In Array or Collection
[statements]
Next
例2.10(10.aspx)用For/Each显示一个数组中的所有数据。
1:    <%
2:           Dim arrData(3)
3:           Dim stritem as string
4:           arrData(0)="Beijing"
5:           arrData(1)="Shanghai"
6:           arrData(2)="Guangzhou"
7:           For  Each  stritem  In  arrData
8:                  Response.Write (stritem & "<br>")
9:           Next
10:  %>
可以看出,For/Each循环与For/Next循环的区别是:在For/Next循环中需要指明循环的次数,而在For/Each循环中不需要这样就可以遍历到一个数组或集合的所有内容。另外需要说明的是,这种循环通常在集合中使用。

2.5  过程和函数

在ASP.NET中,实现这种小程序的方式有两种:过程和函数。

相关教程