Microsoft MVP성태의 닷넷 이야기
패턴매칭에 대해서 질문 있습니다. [링크 복사], [링크+제목 복사]
조회: 11757
글쓴 사람
농상
홈페이지
첨부 파일
 
(연관된 글이 1개 있습니다.)

'시작하세요! 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입니다.


[연관 글]






[최초 등록일: ]
[최종 수정일: 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)
542712/11/20207408LPBOOL Win32 마샬링 질문이 있습니다. [6]
5426하태12/11/20205671안녕하세요 정성태님! C# winform Calendar 컨트롤 질문 드리겠습니다!. [1]
5425정유경12/10/20205720[왕초보] (4) [1]
5423정유경12/8/20206080[왕초보] (3) [2]
5422이승준12/7/20209502VisualStudio 2019의 인텔리센스가 느려지는 경우가 있나요? [4]
5421정유경12/6/20207150[왕초보] (2) [4]
5420정유경12/5/20206705[왕초보] 랜덤 숫자와 배열에 관한 질문 [1]
5419종범12/4/20207135[WPF] Threadpool사용 시 크리티컬 섹션 대응 질문 입니다. [4]
5418한예지 donator11/27/20207375클래스, 인터페이스 크기를 구하고 싶은데 어떻게 해야 될까요? [1]
5417한예지 donator11/27/20206009인터페이스와 추상클래스에 대해 궁금증이 있습니다. [1]
5416한예지 donator11/27/20205838Object 질문 있어요. [1]
5415한예지 donator11/25/20205913교재 213쪽 예제 4.25 질문드립니다. [1]
5414한예지 donator11/23/20206781제네릭 리스트 출력하는 방법이 궁금합니다. [1]
5413민석11/20/20207320C# minidump를 프로그램이 중단 될 때 만들고 싶습니다. [1]파일 다운로드2
5411원격11/20/20205838visualstdio로 웹 사이트로 만들었을때 원격 디버깅이 가능한가요? [1]
5410최성재11/16/20206205vcpkg로 GDCM 내려받을 때 USE_VTK 설정하는 방법-2번째 질문 [1]파일 다운로드1
5409민성11/16/20209232혹시 다른 질문이긴 한데요 [1]
5408최성재11/16/20206479vcpkg로 GDCM 내려받을 때 USE_VTK 설정하는 방법 [1]
5407민성11/11/20205842안녕하세요 yield return에 대해서 [1]
5406질문자11/10/20206286안녕하세요 wcf nettcpbinding의 timeout에 관해서 질문이 있습니다. [2]
5405민성11/9/20207023안녕하세요 이번에도 또 어려운 질문 같습니다. [1]
5404박진우11/6/20207375안녕하세요. SqlParameter 생성자 관련 질문 있습니다. [1]
5403민성11/5/20207450그리고 한가지만 죄송하지만 더 질문 드리겠습니다. [1]
5402민성11/5/20207652안녕하세요 책을 보고 질문하나만 드릴깨요 [2]
5401민성11/3/20206731안녕하세요 이번에도 질문 하나만 드리겠습니다. [2]
5400진우10/29/20206429SQL Server 관련 몇가지 문의 [2]
... 16  17  18  19  [20]  21  22  23  24  25  26  27  28  29  30  ...