程序不可能永远顺序执行,必要的时候必须使用循环和判断语句来改变程序的执行方式,因此大多数程序设计语言提供了分支和循环语句。VB.NET也提供了许多控制语句,下面分别进行简要介绍。
1.选择控制
选择语句使程序控制基于某个条件是否为真传递给特定的语句。VB.NET中的选择控制语句有If...Then语句和Select...Case语句。
(1)If...Then语句是根据布尔表达式的值选择要执行的语句,它的形式为:
或者:
其中,condition是计算结果为True或False,或者计算结果为能够隐式转换为Boolean的数据类型的条件表达式,是必选项。Elseifcondition的意义与此相同,当存在ElseIf时,则是必选项。
Statements是当condition为True时将执行的语句块,在多行格式中是可选项,在没有Else子句的单行格式中是必选项。Elseifstatements的意义与此相同。
End If用于终止If...Then块。
下面通过一个简单实例演示条件选择语句的用法,代码如下:
在上面的代码中,第三行将变量Number初始化为53,接下来根据条件给变量Digits赋值。如果Number小于10,则Digits为1;如果不小于10但小于100,则Digits为2;否则Digits为3。
(2)Select...Case语句,当一个条件有多种可能,且每一种可能对应不同的操作时,可以使用多个if…else语句来实现。但这种表示方法并不直观,尤其是条件的可能性比较多时,很容易出错。利用Select...Case语句则可直观、简便地实现。它的形式为:
其中,testexpression是计算结果为某个基本数据类型的表达式,必选项。
Expressionlist是可以隐式地转换为testexpression类型的表达式列表,表示testexpression的匹配值,在Case语句中是必选项。多个表达式子句用逗号隔开,每个子句可以采取下面的某一种形式:
1)expression1 To expression2。使用To关键字指定testexpression的匹配值范围的边界。expression1的值必须小于或等于expression2的值。
2)[Is]comparisonoperator expression。使用Is关键字指定对testexpression的匹配值的限制。如果没有提供Is关键字,则自动将它在comparisonoperator的前面插入。
3)expression。作为Is格式的特殊情况来处理,在此情况下comparisonoperator是等号(=)。此格式作为testexpression=expression计算。
Statements是Case后面的一条或多条语句,当testexpression匹配expressionlist中的任何子句时执行。Elsestatements是Case Else后面的一条或多条语句,当testexpression不匹配任何Case语句的expressionlist中的任何子句时执行。
End Select终止Select...Case块。
Select语句可以包含任意数量的case实例,但同一Select语句中的两个case常数不能具有相同的值。
下面的例子使用SelectCase语句写入对应于变量Number的值的行。第二个Case语句包含匹配Number当前值的值,因此执行写入“Between 6 and 8”的语句。
2.循环控制
通过使用循环语句可以创建循环。例如,需要输出1~100这100个数字,显然不应该写100条输出语句,这时就需要使用循环。(www.daowen.com)
(1)do语句重复执行一个语句或一个语句块,直到指定的表达式的值为false为止。它的形式如下:
或者:
其中,While或Until是关键字,但只能选其一。使用While时,重复循环直到condition为False;使用Until时,重复循环直到condition为True。
Condition是计算结果为True或False值的表达式。
Statements一条或多条语句,它们在condition为True时或直到condition为True之前重复执行。
Exit Do语句经常用在计算某个条件(例如,用If...Then...Else)之后,将控制立即传送到Loop语句后面的语句。可以在Do循环中的任何位置放置任何数量的ExitDo语句。下面的例子显示如何使用Do...Loop语句。内层的Do...Loop语句循环10次,将标志值设置为False,并使用ExitDo语句提前退出循环。外层循环则在检查标志值后立即退出。
(2)while语句执行一个语句或语句块,直到指定的表达式值为false为止。它的形式如下:
其中,condition是值为布尔型的表达式。如果为Nothing,则将condition作为False处理。当condition为True时,执行所有的statements直到遇到End While语句,随后返回到While语句并再次检查condition。如果condition仍为True,则重复上面的过程。如果为False,则从EndWhile语句后面的语句开始恢复执行。
下面的示例使用While...End While语句来增加计数器变量的值。只要条件计算为True,就执行循环内的语句。
(3)for语句循环重复执行一个语句或语句块,直到指定的表达式值为false。它的形式如下:
其中counter的数据类型通常是Integer,但也可以是任何支持大于或等于(>=)、小于或等于(<=)和相加(+)运算符的基本数值类型。如果尚未声明counter的数据类型,则应用As datatype声明其数据类型。
start和end分别表示Counter的初值和终值,通常是结果为Integer类型的表达式。
stepnumber指定每次循环后counter的增量,通常是结果为Integer类型的表达式。如果没有指定,则stepnumber的值默认为1。
每次进入循环前,将counter变量和end进行比较,包括第一次执行For语句。如果start的值超过end的值,则循环不执行,并且立即将执行传递到Next语句后面的语句。否则循环语句执行后,将stepnumber添加到counter,然后再次比较counter和end。比较的结果或是再次执行循环中的语句,或是终止循环并继续执行Next语句后面的语句。
Exit For语句经常在计算某个条件(例如,用If...Then...Else语句)之后使用,将控制立即传送到Next语句后面的语句。可以在For...Next循环中放置任何数量的ExitFor语句。
下面的示例使用For...Next语句创建字符串,字符串包含10个从0~9的数字,字符串之间用一个空格隔开。外层循环使用一个循环计数器变量,每循环一次,变量值减1。
(4)for each...in语句枚举集合类型中的元素,为每个元素执行一次语句块,用于循环访问集合以获取所需信息,但不应用于更改集合内容,以避免产生不可预知的副作用。此语句的形式如下:
其中,element是数据类型为group元素的数据类型能够隐式转换到的类型的变量,用于循环访问集合的元素。当尚未声明element的类型时,datatype用于声明其数据类型,否则不能使用As子句来重新声明它。
Group是引用对象集合或数组的对象变量。如果在group内至少有一个元素,则进入For Each...Next循环。一旦进入该循环,则针对group内的第一个元素执行语句,如果group内有更多元素,则继续针对每个元素执行循环内的语句。当没有更多元素时,终止循环并且继续执行Next语句后面的语句。
下面的示例使用For Each...Next语句搜索集合中所有元素的Text属性以查找Hello字符串。在该示例中,MyObject是与文本相关的对象,并且是集合MyCollection的一个元素。它们两个都是仅用于说明目的的一般名称。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。