C#switch-case语句示例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

//C#switch-case语句示例 2009-10-01 23:01:01| 分类: 软件专业技术 | 标签: |字号大中小 订阅 .

using System;
using System.Collections.Generic;
using System.Text;

namespace timegood
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("************Time**********");
Console.WriteLine("\t1、morning");
Console.WriteLine("\t2、afternoon");
Console.WriteLine("\t3、night");
Console.Write ("请选择时间:");
string time = Console.ReadLine();
switch(time)
{
case "1":
Console.WriteLine("Good morning!");
break;
case "2":
Console.WriteLine("Good afternoon!");
break;
case "3":
Console.WriteLine("Good night!");
break;
default:
Console.WriteLine("Selection error!");
break;
}
}
}
}

----------------------------------------------
C# switch case的学习 /s/blog_67299aec0100ssou.html

1 switch case 只能对离散的值进行判断。在case处只能写常量。

2 与C,C++ 不同,C#中的switch不允许遍历,必须在每个case后面加break或者goto的语句,否则编译不会通过。

3 值得注意的一点:C#是可以把字符串当常量处理的,这个和C和C++是有区别的。

所以switch()括号中的控制可以是string类型的。

4 在极特殊的情况下,当好几个case的处理方式是一样的时候,可以采取下面的形式:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 转义字符
{
class Program
{
static void Main(string[] args)
{
int i = Int32.Parse(Console.ReadLine());

switch(i)
{
case 1:
Console.WriteLine("haha");
break;
case 2:
case 3:
case 4:
case 5:
Console.WriteLine("heihei");
break;
default:
Console.WriteLine("NO");
break;
}
}
}
}
这里的case等于2,3,4,5的处理方式是一样的。

5 default:后也需要break;

6 switch语句一般都可以用if重写,但是if语句不一定能用switch重写。

----------------------------------------------------------------------
一下这段用VB的代码,如果用C#写应该如何些呢?/question/345451553.html

Function getDaysInMonth(strMonth,strYear)
Dim strDays
Select Case cint(strMonth)
Case 1,3,5,7,8,10,12:
strDays = 31
Case 4,6,

9,11:
strDays = 30
Case 2:
if ((cint(strYear) mod 4 = 0 and cint(strYear) mod 100 <> 0) or ( cint(strYear) mod 400 = 0) ) then
strDays = 29
else
strDays = 28
end if
End Select
getDaysInMonth = strDays
End Function

可以用switch case,不过c#不支持case 条件用逗号隔开的写法
public int getDaysInMonth(int strMonth, int strYear)
{
int strDays = 0;
switch (strMonth)
{
case 1:
case 3:
case 5:
case 7:
case 10:
case 12:
strDays = 31; break;
case 4:
case 6:
case 9:
case 11:
strDays = 30; break;
case 2:
if ((strYear % 4 == 0 && strYear % 100 != 0) || strYear % 400 == 0)
strDays = 29;
else
strDays = 28;
break;
}
return strDays;
}
}

PS:如果你的strMonth、strYear是字符串,可以用int.Parse(strMonth)或Convert.ToInt32(strMonth)转换成int型
--------------------------------------------------------------------------------------------------------------
/lmfeng/archive/2011/08/04/2127294.html
.NET 中C#的switch语句的语法如下(switch,case和default是关键字):

switch ( controllingExpression )
{
 case constantExpression :
statements
break;
 case constantExpression :
statements
break;
 ...
 default :
statements
break;
}
controllingExpression(控制表达式)只求值一次。然后,从其constantExpression值等于controllingExpression值的case开始,它下方的所有语句都会一直运行,直到遇到一个break为止。随后,switch语句将结束,程序从switch结束大括号之后的第一个语句继续执行,并忽略其他case。

假如任何一个constantExpression值都不等于controllingExpression的值,就运行可选标签default之下的语句。

注意 假如controllingExpression的值和任何一个case标签都不匹配,同时没有发现一个default标签,程序会跳过整个switch语句,从它的结束大括号之后的第一个语句继续执行。

例如,前面的嵌套if语句可以改写为以下switch语句:

switch (day)
{
 case 0 :
dayName = "Sunday";
break;
 case 1 :
dayName = "Monday";
break;
 case 2 :
dayName = "Tuesday";
break;
 ...
 default :
dayName = "Unknown";
break;
}


遵守switch语句规则

switch语句非常有用,但在使用时必须谨慎。所写的任何switch语句都必须遵循以下规则:

只能针对基本数据类型使用switch,这些类型包

括int和string等待。对于其他类型,则必须使用if语句。

case标签必须是常量表达式(constantExpression),如42或者"42"。如果需要在运行时计算case标签的值,必须使用if语句。

case标签必须是惟一性的表达式;也就是说,不允许两个case具有相同的值。

可以连续写下一系列case标签(中间不能间插额外的语句),从而指定自己希望在多种情况下都运行相同的语句。如果像这样写,那么最后一个case标签之后的代码将适用于所有case。然而,假如一个标签关联了一个或多个语句,又没有使用break来跳出,那么执行就不能贯穿到后续的标签,而且编译器会报告一个错误。例如:

switch (trumps)
{
 case Hearts :
 case Diamonds : // 允许贯穿 — 标签之间无额外代码
color = "Red"; // 针对Hearts和Diamonds这两种情况都会执行的代码
break;
 case Clubs :
color = "Black";
 case Spades : // 出错 — 标签之间有额外代码,而且没有使用break来跳出
color = "Black";
break;
}
注意 break语句是用来阻止贯穿的最常见的方式,但也可以用一个return语句或者一个throw语句来替代它。throw语句的详情将在以后讨论。


不准贯穿

由于C#存在不准贯穿(fall through)的规则,所以可以自由地安排一个switch语句的各个区域,而不至于影响其含义(其中包括default标签,它传统意义上是最后一个标签,但并非一定如此)。

C和C++程序员要注意的是,在使用C#编程时,必须为switch语句中的每个case(包括default case)都提供一个break语句。这个要求是一件好事情,C和C++程序员经常忘记添加break语句,造成执行自动贯穿到后续的标签,并造成很难发现的bug。

然而,如果你真的喜欢,也可以在C#中模拟C++的贯穿行为,方法是使用一个goto语句来转到下一个case或者default标签。但这种用法是不推荐的,本书也不打算介绍具体细节!

-----------------------------------------------------------------

相关文档
最新文档