Discard, var patterns
Peponi │ 1/8/2025 │ 2m
C#
SyntaxKeywordPattern_var
Discard, var patterns
1/8/2025
2m
Peponi
C#
SyntaxKeywordPattern_var
1. Introduction
다음 C# 식과 문은 패턴을 지원한다.
여기서는 다음 패턴을 설명한다.
- 무시 (
_
) 패턴 :null
을 포함한 모든 식을 매칭한다. var
패턴 :null
을 포함한 모든 식을 매칭하고 지역 변수에 할당한다.
2. 무시 패턴
_
패턴은 switch
식에만 사용이 가능하고, switch
문의 default
와 같은 기능을 한다. switch
식에서 _
를 사용하지 않고 모든 경우를 커버하지 못하면 컴파일러는 경고를 생성한다. (CS8509)
int? foo = null;
Console.WriteLine(foo switch
{
1 => 1,
2 => 2,
_ => "Not recognized"
});
/* output:
Not recognized
*/
3. var 패턴
var
패턴의 형식은 패턴에 대응하는 컴파일 타임 형식으로, 중간 결과 저장이 용이하다.
public record CartesianCoordinate2D(int X, int Y);
// Some codes...
var foo = new CartesianCoordinate2D(-10, 2);
Console.WriteLine(GetValidCutOff(foo));
CartesianCoordinate2D GetValidCutOff(CartesianCoordinate2D? coord)
{
if (coord is not null and var (x, y))
{
if (x < 0) x = 0;
if (y < 0) y = 0;
return new(x, y);
}
throw new ArgumentNullException($"{nameof(coord)}", $"{nameof(coord)} could not be null");
}
/* output:
CartesianCoordinate2D { X = 0, Y = 2 }
*/