首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> C# 入門

全面認識 C#(十六-十九):switch/預定義型別/欄位修飾詞/跳轉陳述式

     編輯:C# 入門

十六、switch 陳述式增強

支援型別

  • 整數型別 (sbyte, byte, short, ushort, int, uint, long, ulong)
  • char
  • string (C# 獨有,Java/C++ 不支援)
  • enum

無隱含貫穿


switch (value) {
    case 1: Do1(); break; // 必須 break/return/throw/goto
    case 2: Do2(); break;
    default: DoDefault(); break;
}
// 不允許 case 1 直接落入 case 2 (需 goto case 2)

模式比對 switch (C# 7.0+)


public static string Describe(object obj) => obj switch {
    int i when i > 0 => $"Positive int: {i}",
    int i => $"Int: {i}",
    string s when s.Length > 10 => "Long string",
    string s => $"String: {s}",
    null => "Null",
    _ => "Unknown"
};

switch 運算式 (C# 8.0+)


var result = value switch {
    1 => "One",
    2 => "Two",
    _ => "Other"
};

十七、預定義型別

完整列表

別名.NET 型別大小範圍/精度
sbyteSystem.SByte8-bit-128 ~ 127
byteSystem.Byte8-bit0 ~ 255
shortSystem.Int1616-bit-32,768 ~ 32,767
ushortSystem.UInt1616-bit0 ~ 65,535
intSystem.Int3232-bit-2B ~ 2B
uintSystem.UInt3232-bit0 ~ 4B
longSystem.Int6464-bit-9E18 ~ 9E18
ulongSystem.UInt6464-bit0 ~ 1.8E19
charSystem.Char16-bitU+0000 ~ U+FFFF
floatSystem.Single32-bit7 位數精度
doubleSystem.Double64-bit15-16 位數精度
decimalSystem.Decimal128-bit28-29 位數精度,財務計算首選
boolSystem.Boolean-true/false

decimal 特性

  • 128 位 (16 bytes),非 IEEE 754 浮點數
  • 基 10 指數,精確表示十進位小數 (0.1 無誤差)
  • 範圍較 float/double 小,但精度極高
  • 適合財務、货幣計算

十八、欄位修飾詞

修飾詞說明對比 Java
const編譯期常數,值內嵌至 IL,隱含 static同 final static
readonly執行期常數,可在建構子指派,支援版本演進無直接對應
static類別級欄位同
volatile禁止編譯器/CPU 重排序,確保執行緒可見性同
initonly (IL)readonly 的 IL 名稱-

const vs readonly 版本演進


// 組件 A v1
public class Config {
    public const string Version = "1.0";        // 編譯期內嵌
    public static readonly string BuildDate = DateTime.Now.ToString(); // 執行期
}

// 組件 B 參考 A
Console.WriteLine(Config.Version);    // IL 內嵌 "1.0"
Console.WriteLine(Config.BuildDate);  // 執行期讀取 A 的欄位

// 組件 A v2 修改 Version = "2.0", 重新編譯 A
// 組件 B 未重新編譯:Version 仍顯示 "1.0" (已內嵌)
// 組件 B 未重新編譯:BuildDate 顯示新值 (執行期讀取)

十九、跳轉陳述式

goto

  • 標籤跳轉:goto Label; ... Label: ;
  • switch 內跳轉:goto case 2;, goto default;
  • 限制:只能跳出巢狀區塊,不可跳入
  • finally 區塊內 goto 只能跳往同一 finally 內標籤

break / continue

  • break:跳出最近迴圈/switch
  • continue:跳過本次迴圈進入下次
  • 不支援標籤 (Java 支援 break label)

return / throw

  • return:離開方法,可回傳值
  • throw:拋出例外

總結

C# switch 支援字串、無隱含貫穿、模式比對大幅增強表達力。decimal 解決財務精度問題。readonly 支援版本演進優於 const。goto 受限但保留 switch 內跳轉實用性。理解這些細節能寫出更正確、高效、可維護的程式碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved