C# 10 : 확장된 속성 패턴 (Extended Property Pattern)
C# 8에서 도입된 속성패턴(Property Pattern)에서는 내포 속성(nested property)을 사용하는 경우 '{속성: {내부속성: 내부속성값}}' 등과 같이 계속 내부 속성들을 지정해 주어야 했다. C# 10에서는 이를 '{속성.내부속성 = 내부속성값}' 등과 단순하게 표현할 수 있게 하였다. 만약 내부 속성이 연달아 있는 경우 계속해서 괄호를 넣어 내부속성을 지정해야 하고 이는 가독성을 많이 떨어뜨릴 수 있을텐데, C# 10의 확장된 속성 패턴 기능을 이러한 점을 개선한 것으로 볼 수 있다.
예제
var p = new Person { Name = "Kim", Address = new Address() };
// C# 10 Extended Property Pattern
if (p is { Address.City: "Seoul" })
{
Console.WriteLine("I live in Seoul");
}
class Person
{
public string Name { get; set; }
public Address Address { get; set; }
}
class Address
{
public string Country { get; set; } = "Korea";
public string City { get; set; } = "Seoul";
}
// C# 10 Extended Property Pattern
if (p is { Address.City: "Seoul" })
{
Console.WriteLine("I live in Seoul");
}
class Person
{
public string Name { get; set; }
public Address Address { get; set; }
}
class Address
{
public string Country { get; set; } = "Korea";
public string City { get; set; } = "Seoul";
}