Buy Me a Coffee

探討 C# 10 的 Property Patterns 及 Extended Property Patterns

C# 10 帶來了許多新特性,其中包括在模式匹配中增強的 Property Patterns 和 Extended Property Patterns。這些新特性為開發者提供了更靈活且強大的代碼撰寫方式,特別是在處理複雜對象時。

Property Patterns 簡介

Property Patterns 允許我們在模式匹配時直接檢查對象的屬性。這意味著你可以在一個表達式中檢查多個屬性,進而根據這些屬性的值來執行不同的操作。

範例

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

public string GetDescription(Person person) =>
    person switch
    {
        { Name: "Alice", Age: >= 18 } => "Alice is an adult.",
        { Name: "Bob", Age: < 18 } => "Bob is a minor.",
        _ => "Unknown person."
    };

在這個範例中,我們使用 Property Patterns 來檢查 Person 對象的 NameAge 屬性。

Extended Property Patterns

Extended Property Patterns 是 C# 10 中的一個增強功能,它允許我們在一個模式中深入檢查對象的子屬性。

範例

public class Address
{
    public string Country { get; set; }
    public string City { get; set; }
}

public class Person
{
    public string Name { get; set; }
    public Address Address { get; set; }
}

public string GetLocation(Person person) =>
    person switch
    {
        { Address.Country: "Taiwan", Address.City: "Taipei" } => "Located in Taipei, Taiwan",
        { Address.City: "Kaohsiung" } => "Located in Kaohsiung",
        _ => "Unknown location."
    };

在這個範例中,我們使用 Extended Property Patterns 來檢查 Person 對象中 Address 屬性的 CountryCity 子屬性。

通過這些新特性,C# 10 讓模式匹配變得更加強大且直觀。這不僅提高了代碼的可讀性,還簡化了複雜條件判斷的實現。