if ( MyProperty is { } myprop )
{
...
}
F12 눌렀을 때 나온 거 보고 깜짝 놀랐네요.
if ( MyProperty is { } myprop )
{
...
}
F12 눌렀을 때 나온 거 보고 깜짝 놀랐네요.
패턴 매칭, 스위치 식
C# 에서는 혁명이죠.
패턴 매칭은 알았지만, { } 이 not null (혹은 object) 인 건 처음 알았습니다 ㅠㅠ
if (MainWindow?.DataContext is not MainViewModel vm)
return;
vm.blabla();
요렇게 쓰고 있네요
전에 살짝쿵 소개했더랬습니다.
제가 여기에 가입하기 전의 글이네요.
좀 더 일찍 가입할 걸 그랬습니다. ^^
저도 몰랐네요…
개초보…
이 문법이 의미하는 바가 와 닿지는 않네요.
not 인데 어떻게 선언을 할 수 있을까요?
internal class Program
{
static void Main(string[] args)
{
object obj = new Program();
if (obj is not Program p)
return;
p.Foo();
}
void Foo()
{
Console.WriteLine("Foo~~!!");
}
}
간단한 테스트로 요렇게 함 짜보세요.
obj 는 Program 이기 때문에 p로 선언 됩니다.
오히려 if 안에서는
요렇게 나오죠.
근데 저도 쓰면서 심오한 원리 까지는 몰라요 ㅎㅎ
그냥 되니까 써요 ㅎㅎ
여기서 쓰신 {} 이 실제로 {} 인가요?
아님 다른 뭔가를 대신해서 {}로 표현 하신 건가여?
입니다.
음냥…
요거 혹시 쓸수 있는 간단한 샘플 있을까요?
제가 했더니 에러가 떠서…;;
속성 패턴은 C# 8 부터 지원한 것으로 아는데요, 다음의 코드로 간단히 확인이 가능합니다.
object? nullObj = null;
object obj = new object();
Point p = new Point(1, 2);
var result = nullObj is { };
Console.WriteLine(result);
result = obj is { };
Console.WriteLine(result);
result = p is { };
Console.WriteLine(result);
record Point(int X, int Y);
와… 하나 또 배웠습니다.
패턴매칭은 알고 있었지만 익숙치가 않네여…ㅎ