目錄
一、關(guān)于switch 語句
1.switch 語句及語法結(jié)構(gòu)
2.switch 語句的一些重要注意事項
3.通常情況下的示例
1.示例1
2.示例2?
二、使用 => 運算符的 switch 表達式
1.關(guān)于switch表達式
2.示例1
3.示例2
一、關(guān)于switch 語句
1.switch 語句及語法結(jié)構(gòu)
????????C# 中的 switch 語句是一種控制結(jié)構(gòu),允許您將一個表達式或值與多個值進行比較,并根據(jù)匹配的結(jié)果執(zhí)行不同的代碼部分。它的語法如下:
switch(expression)
{
case value1:
// 如果 expression 等于 value1,則執(zhí)行此代碼部分
break;
case value2:
// 如果 expression 等于 value2,則執(zhí)行此代碼部分
break;
// 更多的情況...
default:
// 如果 expression 不匹配任何一個情況,則執(zhí)行此代碼部分
break;
}
2.switch 語句的一些重要注意事項
- switch 語句中的每個 case 必須具有唯一的值。
- case 值可以是常量表達式或枚舉成員。
- 可以在 switch 語句中使用 break、continue、return 或 throw 語句來退出當前的代碼塊。
- 如果在 switch 語句中沒有指定 default 情況,則最后一個 case 之后的代碼將作為默認情況執(zhí)行。
- switch 語句可以用于任何標量類型,包括字符串。
- 如果在先使用了return關(guān)鍵字,再后使用 break關(guān)鍵字,則會出現(xiàn)警告:
嚴重性 |
代碼 |
說明 |
項目 |
文件 |
行 |
禁止顯示狀態(tài) |
警告 |
CS0162 |
檢測到無法訪問的代碼 |
CalcByClass |
D:\MR\05\114\CalcByClass\CalcByClass\Form1.cs |
148 |
活動 |
????????無法訪問到達break 語句,因為它出現(xiàn)在return 語句之后。return 語句結(jié)束封閉的 case 分支。
????????解決辦法:刪除在后使用的關(guān)鍵字 break關(guān)鍵字。
3.通常情況下的示例
1.示例1
// switch 語句
namespace _114_1
{
internal class Program
{
private static void Main(string[] args)
{
ArgumentNullException.ThrowIfNull(args);
int x = 5;
switch (x)
{
case 1:
Console.WriteLine("x 等于 1");
break;
case 2:
Console.WriteLine("x 等于 2");
break;
case 3:
Console.WriteLine("x 等于 3");
break;
default:
Console.WriteLine("x 不等于 1、2 或 3");
break;
}
}
}
}
//
/*
x 不等于 1、2 或 3
*/
2.示例2?
// switch、case、return、break
namespace _114_2
{
internal class Program
{
private static void Main(string[] args)
{
ArgumentNullException.ThrowIfNull(args);
int i = 23;
int j = 17;
string type = "*";
string temp;
temp = CCount.Sum(i, j, type).ToString();
Console.WriteLine("{0} {1} {2} = {3}",i, type, j, temp);
}
}
public class CCount
{
public static int Sum(int a, int b, string type)
{
switch (type) // .NET8.0以上會提示IDE0066,使用switch表達式警告
{
case "+":
return a + b; /*break; */
case "-":
return a - b; /*break; */
case "*":
return a * b; /*break; */
case "/":
return a / b; /*break; */
default:
return 0; /*break; */
}
}
}
}
//運行結(jié)果:
/*
23 * 17 = 391
*/
二、使用 => 運算符的 switch 表達式
1.關(guān)于switch表達式
????????在 C# 8.0 中引入的 switch 表達式,而不是 switch 語句,VS2019以上版本。
csharp_style_prefer_switch_expression?
屬性 |
值 |
說明 |
選項名稱 |
csharp_style_prefer_switch_expression |
|
選項值 |
true |
首選使用switch表達式 |
false |
首選使用switch語句 |
|
默認選項值 |
true |
???????
2.示例1
????????將上述示例2轉(zhuǎn)換為使用=> 運算符的 switch表達式。?
????????這是一個使用 => 運算符的 switch 語句的示例,它將根據(jù)提供的運算符執(zhí)行不同的算術(shù)運算。
????????這個 switch 語句接受兩個參數(shù) a 和 b,以及一個運算符,然后根據(jù)運算符執(zhí)行相應(yīng)的算術(shù)運算。每個 case 語句使用 => 運算符將運算符和要執(zhí)行的算術(shù)運算關(guān)聯(lián)起來。
????????例如,如果運算符是 “+”,則執(zhí)行 a + b 并返回結(jié)果。如果運算符是 “-”,則執(zhí)行 a - b 并返回結(jié)果。同樣,對于 “*” 和 “/”,將執(zhí)行相應(yīng)的乘法和除法運算。
????????如果提供的運算符不是 switch 語句中定義的任何一個,則執(zhí)行 default 代碼部分,并返回 0。?文章來源:http://www.zghlxwxcb.cn/news/detail-829711.html
// 使用=> 運算符的 switch表達式
namespace _114_3
{
internal class Program
{
private static void Main(string[] args)
{
ArgumentNullException.ThrowIfNull(args);
int i = 23;
int j = 17;
string type = "*";
string temp;
temp = CCount.Sum(i, j, type).ToString();
Console.WriteLine("{0} {1} {2} = {3}", i, type, j, temp);
}
}
public class CCount
{
public static int Sum(int a, int b, string type)
{
return type switch
{
"+" => a + b,
"-" => a - b,
"*" => a * b,
"/" => a / b,
_ => 0,
};
}
}
}
//運行結(jié)果:
/*
23 * 17 = 391
*/
3.示例2
????????該方法使用CCount
類的Result
方法。Result
方法使用=>運算符的switch表達式返回相應(yīng)的結(jié)果字符串。文章來源地址http://www.zghlxwxcb.cn/news/detail-829711.html
// 使用=> 運算符的return () switch的表達式
namespace _114_4
{
internal class Program
{
private static void Main(string[] args)
{
ArgumentNullException.ThrowIfNull(args);
int input = 4;
Console.WriteLine(CCount.Result(input)); // 輸出 "Four"
}
}
public class CCount
{
internal static string Result(int value)
{
return (value) switch
{
1 => "One",
2 => "Two",
3 => "Three",
4 => "Four",
_=> "Default",
};
}
}
}
到了這里,關(guān)于C#中使用 => 運算符的 switch 表達式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!