C# switch 语句
一个switchswitch 文は、変数が複数の値のいずれかに等しい場合をテストできます。各値は case と呼ばれ、テストされる変数は各switch case进行检查。
语法
C# 中switch文の構文:
switch(expression){
case constant-expression :
statement(s);
break;
case constant-expression :
statement(s);
break;
/* 您可以有任意数量的 case 语句 */
default : /* 可选的 */
statement(s);
break;
}
switch文は以下の規則に従わなければなりません:
- switch文の中のexpression整数型または列挙型でなければならず、あるいは class 型であって、その class が整数型または列挙型に変換する単一の変換関数を持つものでなければなりません。
- switch 内には任意の数の case 文を置くことができます。各 case の後には、比較する値とコロンが続きます。
- caseのconstant-expressionswitch 内の変数と同じデータ型でなければならず、かつ定数でなければなりません。
- テストされる変数が case 内の定数と等しい場合、case の後に続く文が実行され、文に遭遇するまでbreakステートメントまで。
- 当遇到break文に遭遇すると、switch は終了し、制御フローは switch 文の次の行にジャンプします。
- すべての case に含める必要があるわけではありません。break。case 文が空の場合は、含めなくても構いません。break、制御フローは继续後続の case は、break に遭遇するまで続行されます。
- C# では、ある case 部分から次の case 部分へ実行を継続することはできません。case 文内で何らかの文が既に実行された場合は、... を含める必要があります。break、または他のジャンプ文。
- 一个switch文にはオプションのdefaultswitch の末尾に文を含める必要があります。default 文は、上記のすべての case が true でない場合に実行するタスクに使用されます。default にも ... を含める必要があります。break文を付けることができます。これは良い習慣です。
- C# は、ある case ラベルから別の case ラベルへの明示的なフォールスルーをサポートしていません。C# がある case ラベルから別の case ラベルへの明示的なフォールスルーをサポートするようにするには、goto switch-case または goto default を使用できます。
流程图
实例
以下の例は、現在が何曜日かを判断するために使用します:
实例
using System;
namespace MyApplication
{
class Program
{
static void Main(string[] args)
{
int day = 4;
switch (day)
{
case 1:
Console.WriteLine("Monday");
break;
case 2:
Console.WriteLine("Tuesday");
break;
case 3:
Console.WriteLine("Wednesday");
break;
case 4:
Console.WriteLine("Thursday");
break;
case 5:
Console.WriteLine("Friday");
break;
case 6:
Console.WriteLine("Saturday");
break;
case 7:
Console.WriteLine("Sunday");
break;
}
}
}
}
namespace MyApplication
{
class Program
{
static void Main(string[] args)
{
int day = 4;
switch (day)
{
case 1:
Console.WriteLine("Monday");
break;
case 2:
Console.WriteLine("Tuesday");
break;
case 3:
Console.WriteLine("Wednesday");
break;
case 4:
Console.WriteLine("Thursday");
break;
case 5:
Console.WriteLine("Friday");
break;
case 6:
Console.WriteLine("Saturday");
break;
case 7:
Console.WriteLine("Sunday");
break;
}
}
}
}
実行結果は実行日の日付によって異なります。私がこの日に実行した結果は次のとおりです:
Thursday
以下の例は学生の成績を判定するもので、次の内容を含みます:default语句:
实例
using System;
namespace DecisionMaking
{
class Program
{
static void Main(string[] args)
{
/* 局部变量定义 */
char grade = 'B';
switch (grade)
{
case 'A':
Console.WriteLine("很棒!");
break;
case 'B':
case 'C':
Console.WriteLine("做得好");
break;
case 'D':
Console.WriteLine("合格しました");
break;
case 'F':
Console.WriteLine("最好再试一下");
break;
default:
Console.WriteLine("無効な成績");
break;
}
Console.WriteLine("あなたの成績は {0} です", grade);
Console.ReadLine();
}
}
}
namespace DecisionMaking
{
class Program
{
static void Main(string[] args)
{
/* 局部变量定义 */
char grade = 'B';
switch (grade)
{
case 'A':
Console.WriteLine("很棒!");
break;
case 'B':
case 'C':
Console.WriteLine("做得好");
break;
case 'D':
Console.WriteLine("合格しました");
break;
case 'F':
Console.WriteLine("最好再试一下");
break;
default:
Console.WriteLine("無効な成績");
break;
}
Console.WriteLine("あなたの成績は {0} です", grade);
Console.ReadLine();
}
}
}
上記のコードがコンパイルおよび実行されると、次の結果が生成されます:
做得好 您的成绩是 B其他扩展