探討 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
對象的 Name
和 Age
屬性。
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
屬性的 Country
和 City
子屬性。
通過這些新特性,C# 10 讓模式匹配變得更加強大且直觀。這不僅提高了代碼的可讀性,還簡化了複雜條件判斷的實現。