Microsoft MVP성태의 닷넷 이야기
패턴매칭에 대해서 질문 있습니다. [링크 복사], [링크+제목 복사]
조회: 3542
글쓴 사람
농상
홈페이지
첨부 파일
 
'시작하세요! C# 7.1 프로그래밍'을 공부하고 있습니다.
757쪽 switch문을 이용한 패턴매칭을 공부하는 중입니다.

일제 제가 구한한 코드입니다.
public static void Main()
        {
            object[] objList = new object[] { 100, null, DateTime.Now, new List<int>() }; // 배열의 각 요소들은 다른 값을 가지고 있다.
            //object[] objList = null; // null이면 아무값도 안가지고 있다는 의미이므로 System.NullReferenceException이 발생한다.

            foreach (object item in objList) // 배열에 있는 모든 요소들을 순회하며 접근
            {
                switch (item)
                {
                    case 100: // 100이 있으면
                        //WriteLine(item); // 값을 출력
                        break;
                    case null: // null이 있으면
                        //WriteLine("Null"); // 값을 출력
                        break;
                    case DateTime dt: // DateTime 자료형을 가진 요소가 있으면
                        WriteLine(item); // DateTime을 가리키는 item의 값을 출력
                        break;
                    case List<int> list: // List<int>형 데이터가 있으면 list의 데이터 갯수 출력
                        WriteLine(list.Count); // List<int>형인지를 검사하는 것이지 List<double>처럼 같은 리스트라고 출력하지는 않는다.
                        break;
                    //default: // 기존처럼 default로 해도 되고.
                    case var elem: // 이렇게 해도 default랑 같은 뜻이다.
                                    // elem는 아무 의미 없음
                        WriteLine("아무것도 없음");
                        break;
                }
            }
        }
여기서 case DateTime dt:를 dt변수를 생략하여 case DateTime:로, case List<int> list:를 list 변수를 생략하여 case List<int>:로 생략이 가능하다고 적혀있습니다.
하지만 변수명을 생략하면 '지정한 컨텍스트에서 유효하지 않은 형식입니다.라는 컴파일 오류가 발생합니다.
혹시나 해서 WriteLine()을 전부 삭제하고 테스트해봤는데 여전히 똑같은 오류가 발생합니다.
제가 잘못 쓴 부분이 있는지, 잘못 알고 있는 부분이 있는지 궁금합니다.

비주얼 스튜디오 2017, 닷넷 버전 4.7.1입니다.


[연관 글]


donaricano-btn



[최초 등록일: ]
[최종 수정일: 7/29/2018 ]


비밀번호

댓글 쓴 사람
 



2018-07-29 02시33분
오류 맞습니다. 보니까 그 이전의 is 연산자 예제를 재활용하면서 주석을 변경 없이 그대로 사용했었던 것 같습니다. 아래의 정오표에 반영했고, 향후 인쇄본에는 그렇게 나갈 것입니다.

도서: 시작하세요! C# 7.1 프로그래밍: 기본 문법부터 실전 예제까지
; http://www.sysnet.pe.kr/2/0/11265

오류 보고해 주셔서 감사합니다. ^^
정성태

... 16  17  18  19  20  21  22  23  24  25  26  27  28  29  [30]  ...
NoWriterDateCnt.TitleFile(s)
3668김치사발면12/16/20154793템플릿이 자꾸 초기화? 되버리네요 [1]
3667김치사발면12/15/20154695템플릿 설정 추가 질문 [1]파일 다운로드1
3666노태현12/15/20154832사용자별로 권한을 주고 볼 수 있는 데이터를 제한하려면 어떤 방법으로 접근하는게 좋을까요? [2]
3665김치사발면12/14/20157046C# 템플릿 설정이 이상해요ㅜㅜ [3]파일 다운로드1
3664KuLu12/10/20154949멀정하던 사이트 중 일부메뉴가 응답없음이 되어버립니다. [3]
3663Sungwoo Park12/10/20156065UWP 서버 프로그래밍 작업 중 [5]
3662Sungwoo Park12/9/20155700uwp앱에서 접속한 클라이언트 주소값을 받아서 표시하고 싶은데 어떤 메소드를 써야 할까요? [7]
3661김무진12/9/20155542Oracle 환경에서 데이터를 조회할때 한글이 ? 이렇게 표시가됩니다. [1]
3660질문자12/7/20157248OpenFileDialog 호출시 hang걸리는 문제 [4]
3659Sungwoo Park12/4/20156316UWP 앱에서 textBox로 클라에서 받은 값을 나타내고 싶은데 안되고 있습니다. [5]
3658강준12/3/20156325Visual Studio (Xamarin) vs Eclipse [2]
3656DEVYHJ12/1/20154797MasterPageFile 사용시 다국어 처리 질문입니다. [1]
3653DEVYHJ11/26/20156254ds:Signature 질문입니다. [7]
3654윤용한11/27/20155563    답변글 [답변]: ds:Signature 질문입니다. [3]
3657윤용한12/1/20157188    답변글 [답변]: ds:Signature 질문입니다. [1]
3651노태현11/20/201512693MariaDB - ASP.NET오류의 원인조차 못 찾고 있습니다.. [2]파일 다운로드2
3652노태현11/20/20156234    답변글 [답변]: MariaDB - ASP.NET오류의 원인조차 못 찾고 있습니다.. [3]
3649kokon11/17/20156253예제 파일 실행이 안 되네요 [5]
3647Sanghoon Lee11/15/20155017Part 3 목차? [5]
3646힘찬도약11/13/20158030c# mscorlib System.IO IOException [8]파일 다운로드2
3644힘찬도약11/11/20157850c# user.config파일 [2]
3645spowner11/13/20155969    답변글 [답변]: c# user.config파일 - Json.NET을 이용한 설정파일 처리 [1]파일 다운로드1
3643힘찬도약11/11/20157437C# 함수의 processing time과 재호출 [14]
3642.net11/10/20156150c# 으로 작성된 com+ 에 대한 문제입니다. [2]
3641힘참도약11/9/20156724c# log file 관련해서 질문드립니다. [5]
3638윤창선11/4/20156505사설IP가 부여된 무선라우터간 영상전송 관련 문의 [8]
... 16  17  18  19  20  21  22  23  24  25  26  27  28  29  [30]  ...