-
typeof switch (패턴일치)프로그래밍/C# + Unity 2019. 11. 4. 13:50728x90
C#의 switch문은 C99나 C++와는 달리 강력한 기능을 지원한다.
이는 C# 7.0이전에도 string을 switch문에 넣을 수 있었고, 현재 C# 7.0이후로는 '패턴일치'라는 강력한 기능을 통해 코드를 간결하지만, 직관적으로 표현할 수 있게 되었다.
https://stackoverflow.com/questions/708911/using-case-switch-and-gettype-to-determine-the-object
과거에는 위와 같이, Class에 따라 typeof에 switch문을 사용할 수 없어서 아래와 같은 if-elif-else 구문을 사용했다.
12345Type nodeType = node.GetType();if (nodeType == typeof(CasusNodeDTO)){}else ...cs 1234if (node is CasusNodeDTO){}else ...cs 하지만, 조건이 늘어나면 테스트 해야하는 경우 복잡한 코드는 프로그래머를 지치게 할 뿐이다.
C# 패턴일치는 다음과 같은 강력한 기능을 제공한다.
12345678910111213141516private int GetNodeType(NodeDTO node){switch (node){case CasusNodeDTO CNDTO:return 1;case BucketNodeDTO BNDTO:return 3;case BranchNodeDTO BrNDTO:return 0;case LeafNodeDTO LNDTO:return 2;default:return -1;}}cs
728x90댓글