전 아직 C# 초보인 것 같습니다.

if ( MyProperty is { } myprop )
{
   ...
}

F12 눌렀을 때 나온 거 보고 깜짝 놀랐네요.

6개의 좋아요

패턴 매칭, 스위치 식

C# 에서는 혁명이죠.

3개의 좋아요

패턴 매칭은 알았지만, { } 이 not null (혹은 object) 인 건 처음 알았습니다 ㅠㅠ

3개의 좋아요
if (MainWindow?.DataContext is not MainViewModel vm)
    return;
vm.blabla();

요렇게 쓰고 있네요

2개의 좋아요

전에 살짝쿵 소개했더랬습니다.

5개의 좋아요

제가 여기에 가입하기 전의 글이네요.
좀 더 일찍 가입할 걸 그랬습니다. ^^

3개의 좋아요

저도 몰랐네요…
개초보… :cry:

2개의 좋아요

이 문법이 의미하는 바가 와 닿지는 않네요.
not 인데 어떻게 선언을 할 수 있을까요?

1개의 좋아요
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 안에서는
image
요렇게 나오죠.

근데 저도 쓰면서 심오한 원리 까지는 몰라요 ㅎㅎ
그냥 되니까 써요 ㅎㅎ

3개의 좋아요

여기서 쓰신 {} 이 실제로 {} 인가요?
아님 다른 뭔가를 대신해서 {}로 표현 하신 건가여?

1개의 좋아요

입니다.

2개의 좋아요

음냥…

요거 혹시 쓸수 있는 간단한 샘플 있을까요?

제가 했더니 에러가 떠서…;;

1개의 좋아요

속성 패턴은 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);
5개의 좋아요

와… 하나 또 배웠습니다.

4개의 좋아요

패턴매칭은 알고 있었지만 익숙치가 않네여…ㅎ

2개의 좋아요