溫馨提示×

c#中的switch支持自定義類型嗎

c#
小樊
81
2024-09-28 05:31:58
欄目: 編程語言

在C#中,switch語句默認(rèn)不支持直接對自定義類型進(jìn)行比較。switch語句在C#中的設(shè)計(jì)主要用于處理基本數(shù)據(jù)類型(如int、char、float、string等)和枚舉類型。

然而,你可以通過一些方法來實(shí)現(xiàn)對自定義類型的支持:

  1. 使用switch表達(dá)式與模式匹配:從C# 8.0開始,你可以使用switch表達(dá)式結(jié)合模式匹配來處理自定義類型。這允許你根據(jù)類型的特性或?qū)傩詠韴?zhí)行不同的操作。例如:
public class CustomType
{
    public int Id { get; set; }
    public string Name { get; set; }
}

CustomType customObject = new CustomType { Id = 1, Name = "Example" };

var result = customObject switch
{
    var obj with { Id == 1 } => "Id is 1",
    var obj with { Name == "Example" } => "Name is Example",
    _ => "Unknown type"
};
  1. 重寫EqualsGetHashCode方法:如果你希望switch語句能夠基于自定義類型的屬性進(jìn)行比較,你可以重寫該類型的EqualsGetHashCode方法。這樣,當(dāng)你在switch語句中使用該類型作為鍵時,它將基于這些方法的返回值來確定要比較的鍵。
  2. 使用字典或查找表:如果自定義類型有很多不同的變體,并且你希望根據(jù)這些變體執(zhí)行不同的操作,你可以考慮使用字典或查找表來存儲這些變體及其對應(yīng)的操作。然后,你可以使用這個字典來查找并執(zhí)行適當(dāng)?shù)牟僮?,而不是使?code>switch語句。
  3. 使用多個if-else語句:作為一種替代方案,你可以使用多個if-else語句來處理不同的自定義類型情況。雖然這種方法可能不如switch語句簡潔,但它可以很好地處理大量不同類型的情況。

請注意,雖然這些方法可以實(shí)現(xiàn)對自定義類型的支持,但在選擇最佳方法時,請考慮你的具體需求和場景。

0