在C#中,switch
語句默認不支持直接對自定義類型進行比較。switch
語句在C#中的設計主要用于處理基本數據類型(如int、char、float、string等)和枚舉類型。
然而,你可以通過一些方法來實現對自定義類型的支持:
switch
表達式與模式匹配:從C# 8.0開始,你可以使用switch
表達式結合模式匹配來處理自定義類型。這允許你根據類型的特性或屬性來執行不同的操作。例如: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"
};
Equals
和GetHashCode
方法:如果你希望switch
語句能夠基于自定義類型的屬性進行比較,你可以重寫該類型的Equals
和GetHashCode
方法。這樣,當你在switch
語句中使用該類型作為鍵時,它將基于這些方法的返回值來確定要比較的鍵。switch
語句。if-else
語句:作為一種替代方案,你可以使用多個if-else
語句來處理不同的自定義類型情況。雖然這種方法可能不如switch
語句簡潔,但它可以很好地處理大量不同類型的情況。請注意,雖然這些方法可以實現對自定義類型的支持,但在選擇最佳方法時,請考慮你的具體需求和場景。