源码
资讯
  当前位置:源码网网络学院网络编程.NET教程 → C#学习第十三天
特别推荐
热点TOP10
C#学习第十三天
日期:2007年4月20日 作者: 人气: 查看:[大字体 中字体 小字体]

何谓直达?在C(和C++)中,忽略break并且按以下编写代码是完全合法的:

nVar = 1
switch (nVar)
{
case 1:
DoSomething();
case 2:
DoMore();
}

在这个例子中,在执行了第一个case语句的代码后,将直接执行到其它case标签的代码,直到一个break语句退出switch语段为止。尽管有时这是一个强大的功能,但它更经常地产生难于发现的缺陷。

可如果你想执行其它case标签的代码,那怎么办? 有一种办法,它显示于清单6.3中。

清单 6.3 在swtich语句中使用 goto 标签 和 goto default

1: using System;
2:
3: class SwitchApp
4: {
5: public static void Main()
6: {
7: Random objRandom = new Random();
8: double dRndNumber = objRandom.NextDouble();
9: int nRndNumber = (int)(dRndNumber * 10.0);
10:
11: switch (nRndNumber)
12: {
13: case 1:
14: //什么也不做
15: break;
16: case 2:
17: goto case 3;
18: case 3:
19: Console.WriteLine("Handler for 2 and 3");
20: break;
21: case 4:
22: goto default;
23: // everything beyond a goto will be warned as
24: // unreachable code
25: default:
26: Console.WriteLine("Random number {0}", nRndNumber);
27: }
28: }
29: }

在这个例子中,通过Random类产生用于控制表达式的值(第7~9行)。switch语段包含两个对switch语句有效的跳转语句。

goto case  标签:跳转到所说明的标签

goto default: 跳转到 default 标签

有了这两个跳转语句,你可以创建同C一样的功能,但是,直达不再是自动的。你必须明确地请求它。
不再使用直达功能的更深的含义为:你可任意排列标签,如把default标签放在其它所有标签的前面。为了说明它,我创建了一个例子,故意不结束循环:

switch (nSomething)
{
default:
case 5:
goto default;
}

我已经保留了其中一个swich 语句功能的讨论直至结束——事实上你可以使用字符串作为常量表达式。这对于VB程序员,可能听起来不象是什么大的新闻,但来自C或C++的程序员将会喜欢这个新功能。

现在,一个 switch 语句可以如以下所示检查字符串常量了。

string strTest = "Chris";
switch (strTest)
{
case "Chris":
Console.WriteLine("Hello Chris!");
break;
}

(出处:源码网)

百度搜索 Google搜索
相关文章:
·C#将指定网页添加到收藏夹的方法
·一个用c#写的扫描asp源码漏洞的应用程序(续)
·关于两代语言.C/C++,java/c#
·C#语言初级入门(1)
·C#语言初级入门(2)
·C#语言初级入门(3)
·C#语言初级入门(4)
·分部方法:应该纳入到C#中吗?
·C#冒泡算法!
·用C#开发智能手机软件:推箱子(一)
相关软件:
·C#版聊天室
·春天网络域名主机系统(C#全源码)
·自由投票调查系统(C#) v1.0
·C#语言参考(DOC)
·CK留言本(C#版)
·一个C#写的翻转棋游戏
·ASP.NET(C#)新手留言本