Microsoft MVP성태의 닷넷 이야기
.NET Framework: 120. 타입이 다른 배열끼리의 변환 [링크 복사], [링크+제목 복사],
조회: 26939
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 


타입이 다른 배열끼리의 변환


이래서 공부를 해야 한다는 생각이. ^^

그동안, 경우에 따라서 아래와 같은 식으로 코드를 작성해야 할 필요가 있었을 분들이 계실 텐데요.

object[] obj = new object[2] { Guid.NewGuid(), Guid.NewGuid() };
Guid[] guids = obj as Guid [];

물론, 마음 먹었던 것과는 달리 아쉽게도 위의 코드는 오류가 발생합니다.

Error   1   Cannot convert type 'object[]' to 'System.Guid[]' via a reference conversion, 
            boxing conversion, unboxing conversion, wrapping conversion, or null type conversion    
            d:\...\Form1.cs MyTest  27  29

이를 해결하기 위해서는, .NET 1.1 시절에는 아래와 같은 방식으로 코드를 작성해야 했습니다.

object[] obj = new object[2] { Guid.NewGuid(), Guid.NewGuid() };

Guid[] guids = new Guid[obj.Length];
int index = 0;
foreach (object item in obj)
{
    guids[index ++] = (Guid)item;
}

세상이 좋아져서, .NET 2.0이 나왔고 Generic의 도움을 빌어 이젠 아래와 같이 작성할 수 있습니다.

private static Guid ObjectToGuidConverter(object from)
{
    return (Guid)from;
}

private void Form1_Load(object sender, EventArgs e)
{
    object[] obj = new object[2] { Guid.NewGuid(), Guid.NewGuid() };
    Guid[] guids = Array.ConvertAll(obj, new Converter<object, Guid>(ObjectToGuidConverter)) as Guid[];
}

저처럼, .NET 1.0 시절부터 바쁘게 달려온 사람들한테는... 팁일 수 있겠죠. ^^



[이 토픽에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 7/9/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 166  167  168  169  170  171  172  173  174  175  176  [177]  178  179  180  ...
NoWriterDateCnt.TitleFile(s)
690정성태4/5/200930033오류 유형: 75. Event Viewer - The data is invalid (13)
688정성태4/5/200935962VS.NET IDE: 60. Output 경로에 매크로 상수 사용하는 방법 [1]
687정성태4/5/200929858.NET Framework: 126. Composite Application Guidance for WPF and Silverlight
689정성태4/5/200930158    답변글 .NET Framework: 126.1. CAG - 빌드 환경 구성파일 다운로드1
691정성태4/6/200929489    답변글 .NET Framework: 126.2. CAG - Shell 띄우기파일 다운로드1
695정성태4/10/200930947    답변글 .NET Framework: 126.3. CAG - 간단한 유형의 모듈 제작파일 다운로드1
703정성태4/18/200930209        답변글 .NET Framework: 126.6. CAG - Tabbed MDI Shell 적용파일 다운로드1
697정성태4/13/200934354    답변글 .NET Framework: 126.4. CAG - Unity 컨테이너 사용 [1]파일 다운로드1
698정성태4/15/200933616    답변글 .NET Framework: 126.5. CAG에 MVVM 패턴 적용 (1) [2]파일 다운로드1
686정성태4/4/200955809웹: 11. IE 8 - TabProcGrowth 레지스트리 키 [2]
685정성태4/3/200956202개발 환경 구성: 38. Hyper-V 사용 후기 [5]
684정성태4/2/200930805오류 유형: 74. IE 8 설치 이후, VS.NET 위저드 화면 동작 오류
683정성태3/28/200937753디버깅 기술: 26. 보호 모드로 응용 프로그램 디버깅하는 방법 - 두 번째 이야기 [3]
682정성태3/27/200934515디버깅 기술: 25. 보호 모드로 응용 프로그램 디버깅하는 방법 [2]
681정성태3/23/200932082오류 유형: 73. SQL Server 2008 Express 설치 오류
680정성태3/21/200931900.NET Framework: 125. WPF - RadioButton에 대한 데이터바인딩(2) [1]파일 다운로드1
679정성태3/15/200926561오류 유형: 72. IE 8 멈춤 현상 - 두 번째 이야기
678정성태3/15/200932029개발 환경 구성: 37. Hyper-V에서 Vista의 Virtual Machine Bus 장치 인식 문제
677정성태3/15/200932193개발 환경 구성: 36. MSI P45 Neo3-FR V2 - RAID 1 구성
997정성태2/26/201127465    답변글 개발 환경 구성: 36.1. 개발 환경 구성: 34 - 1. RAID 1 구성 이후...
676정성태3/15/200928502오류 유형: 71. IE 8 RC1 - 멈춤 현상
675정성태3/14/200931510오류 유형: 70. Virtual Machine Additions 제거
673정성태3/11/200930186웹: 10. 금일 진행되었던 마이크로소프트 IE 8 행사의 ActiveX 세션 PPT [6]파일 다운로드1
672정성태3/1/200943666Windows: 43. Loopback network adapter 설치하기 [2]
670정성태2/22/200936520.NET Framework: 124. IIS 7에서 SVC 호스팅 [1]
669정성태2/21/200930388오류 유형: 69. The SQL Server Network Interface library could not register the Service Principal Name (SPN) for the SQL Server service.
... 166  167  168  169  170  171  172  173  174  175  176  [177]  178  179  180  ...