C# switch语句

一、C# switch语句

if语句每次判断只能实现两种选择,而switch语句每次判断可以实现多种选择。

基本语法格式如下:

switch(controlling-expression)
{
    case constant-expression:
        {语句块}
        跳转语句(如break、return、goto)
    case constant-expression:
        {语句块}
        跳转语句(如break、return、goto)
    ......
    default:
        {语句块}
        跳转语句
}

?controlling-expression:控制表达式。可以是sbyte、byte、short、ushort、int、uint、long、ulong、char、string或enum类型。
?constant-expression:常数表达式。必须属于或者能隐式转换成控制类型controlling-expression。
switch关键字后面的表达式计算一次,如果找到和表达式的值相等的一个常数表达式,就执行case标识的代码块。进入case块之后,程序将一直执行,直到遇到break语句结束。如果没有与之相匹配的值,就运行由可选的default标签所标识的语句块。如果没有可选的default标签,程序会跳过整个switch语句,从它的结束大括号之后的第一个语句继续执行。

二、提示

在switch语句中,不允许两个或两个以上的case具有相同的值。

有时候,switch语句要比if语句更加简洁!

三、技巧

如果要像C、C++那样,执行完一个case子句以后,继续遍历其它的子句,只要加入下面的两条跳转语句即可。

?goto case label:跳至标签语句执行。
?goto default:跳至default标签执行。
类似的代码如下:

total = 365;
switch(month)
{
    case 1: total -= 31; goto case 2;
    case 2: total -= 28; goto case 3;
    case 3: total -= 30; goto case 4;
    ......
    case 12: total -= 31; goto case default;
    default: total += day;
}

四、示例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            // C# switch语句-www.baike369.com
            Console.WriteLine("请输入考试分数(0-100的整数):");
            int score = Convert.ToInt32(Console.ReadLine());
            switch (score/10)
            {
                case 10:
                    Console.WriteLine("满分");
                    break;
                case 9:
                    Console.WriteLine("优秀");
                    break;
                case 8:
                    Console.WriteLine("良好");
                    break;
                case 7:
                    Console.WriteLine("较好");
                    break;
                case 6:
                    Console.WriteLine("及格");
                    break;
                default:
                    Console.WriteLine("不及格");
                    break;
            }
            Console.ReadLine();
        }
    }
}

 

posted @ 2015-01-21 16:56  melao2006  阅读(334)  评论(0编辑  收藏  举报