Microsoft MVP성태의 닷넷 이야기
튜플에 대해서 건의가 있습니다. [링크 복사], [링크+제목 복사]
조회: 2261
글쓴 사람
농상
홈페이지
첨부 파일
 
'시작하세요! C# 7.1 프로그래밍'에서 741쪽 튜플 예제를 공부하고 있습니다.
그 중에서 개별 필드를 분해해서 받는 구문을 하고 있는데 궁금한점이 있습니다.

제가 작성한 코드입니다.
class Tuple_Var
{
      static (bool result, int number) ParseInteger(string txt) // static 메소드
      {
            int number = 0;
            bool result = false;

            try
            {
                number = int.Parse(txt);
                result = true;
            }
            catch { }

            return (result, number);
      }

      public static void Main()
      {
            (var success, var number) result = ParseInteger("10"); // 이 줄에서 2개의 오류가 발생
      }
}

ParseInteger("10");의 식이 (bool result, int number)인데 이를 암시적으로 (var success, var number)로 바꿀 수 없다는 오류와
(var success, var number)에서 var 부분에서 var는 지역변수나 스크립트 코드에만 표시할 수 있다는 오류가 발생했습니다.
(var success, var number)를 var로 바꾸면 모든 오류는 해결이 됩니다.

문제는 Main()메소드의 result라는 변수를 없애야 했던 것이었습니다.
(var success, var number) = ParseInteger("10"); 로 바꾸면 됬습니다.

변수의 이름이 존재해야 사용할 수 있었던 기존의 방법들과 달리, 변수 이름이 존재하지 않아도 정의한 튜플의 요소 이름으로 데이터에 접근할 수 있다는 예제입니다.
따라서 저는 튜플 변수 이름까지 정의했기 때문에 오류가 났던 것입니다.
예제 자체에는 문제가 없지만 저처럼 기존의 변수 초기화 방식처럼 사용는 사람들을 위해서 따로 변수 이름이 없어도 된다는 주석이 있었으면 좋겠습니다.




donaricano-btn



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


비밀번호

댓글 쓴 사람
 



2018-07-29 02시30분
컴파일러에 의해 오류가 발생하는 구문 유형을 매번 나열하면서 허용이 안 된다고 쓰는 것은 좀 부담이 있습니다. 할 수 있는 것을 누락시킨 것은 개선 사항으로 넣을 수 있지만 할 수 없는 것을 안 된다고 넣는 것은 최소화하는 것이 좋겠다는 생각입니다. 그래도 의견 주셔서 감사드립니다. ^^
정성태

[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
5495Natie5/13/202117객체를 생성과 동시에 초기화 하는 방법 [1]
5494지예예지5/13/202121비동기 코드 흐름이 궁금합니다! [1]
5493xingTester5/6/2021162xing api XQCSPAT00600 질문입니다 [4]파일 다운로드1
5492한예지5/5/2021136FromCurrentSynchronizationContext 관련 코드 질문있습니다! [2]
5491조우성5/4/2021174WinForm과 WPF의 성능차이 비교한 자료가 있을까요? [3]
5490한예지5/3/2021124UI 스레드의 Invoke 질문있습니다. [4]
5489저누4/28/2021251시작하세요 C# 9.0, 225페이지 구조체 관련 질문드립니다. [2]
5488종범4/27/2021266C# 비동기 함수 async, await 와 Task의 관계에 대해 질문 드립니다. [6]
5487진우4/27/2021150C# 엑셀 자동화 성능 향상 문의 [2]
5486지나가던사람4/26/2021175닷넷 구현 코드 관련 질문 [2]
5485이재원4/17/2021244교재 315페이지 내용 질문 [3]
5484Syong4/16/2021226윈폼 기반의 응용프로그램 dll 참조와 32,64bit 빌드 관련 문의 [3]
5483한예지4/15/2021214익명 형식과 var 관계 질문 있습니다. [2]
5482질문4/13/2021263WPF를 위한 MVVM toolkit 선택과 관련한 문의드립니다. [3]
5480한예지4/5/2021422GetHashCode 질문있습니다! [2]
5479한예지4/4/2021244Equals를 닷넷에서 어떻게 구현했는지 보고 싶을 떄는 어떻게 해야 될까요? [2]
5478갑자기C#3/23/2021499C# Winform에서 TextBox없이 입력 받을 수 있나요? [7]
5477달팽이3/18/2021315c# 도형을 그린후 편집하는 방법이 궁금합니다. [2]파일 다운로드1
5475dimohy3/2/2021433POH가 .NET 5에 추가된 것으로 알고 있습니다. POH가 유용한 경우는 어떤 경우가 있을까요? [1]
5474Syong2/26/2021395사용자 지정 컨트롤 생성시 Invalidate, Update, Refresh의 차이점 [2]
5473한예지2/25/2021402디자인 타임이 뭔지 궁금합니다!! [5]
5472dimohy2/24/2021362등록하지 않고 ocx를 사용하는 `키움`관련 포스팅을 따라가다 질문드립니다. [2]
5471남산2/21/2021437MarshalDirectiveException 에 대한 질문입니다. [1]
5470한예지2/7/2021547yield 질문있습니다!! [2]
5469유호성2/6/2021478Parallel + Task.Run 동시 실행 환경에서 간헐적으로 Task.Run()에서 null이 리턴됩니다. [3]파일 다운로드1
[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...