IDE0019 - Use pattern matching
예를 들어 다음과 같은 식의 코드에서,
using System;
using System.Linq;
class Program
{
static void Main(string[] args)
{
object[] objs = args.ToArray<object>();
Program pg = objs[0] as Program;
if (pg == null)
{
return;
}
Console.WriteLine(pg.ToString());
}
}
"IDE0019 Use pattern matching"
메시지가 발생합니다. C# 7.0의 패턴 매칭 구문을 쓰라고 것인데, 그래서 다음과 같이 바꿔보면,
if ((objs[0] is Program pg) == false)
{
return;
}
Console.WriteLine(pg.ToString()); // 컴파일 오류 - CS0165 Use of unassigned local variable 'pg'
이번에는 아예 pg 변수의 scope로 인해 컴파일 오류가 발생합니다. 대신 명시적인 false 비교를 제외하는 것으로,
if (!(objs[0] is Program pg))
{
return;
}
Console.WriteLine(pg.ToString());
문제를 해결할 수 있습니다. 아쉽게도 저 구문이 직관적이지는 않기 때문에 IDE0019의 경고를
프로젝트 단위에서 제거하는 것도 나쁘지 않은 선택으로 보입니다.
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]