Microsoft MVP성태의 닷넷 이야기
.NET Framework: 120. 타입이 다른 배열끼리의 변환 [링크 복사], [링크+제목 복사],
조회: 19869
글쓴 사람
정성태 (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

비밀번호

댓글 작성자
 




... 151  152  153  154  155  156  157  158  159  160  161  [162]  163  164  165  ...
NoWriterDateCnt.TitleFile(s)
995정성태2/11/201156126.NET Framework: 205. 코드(C#)를 통한 풀 덤프 만드는 방법 [4]
994정성태2/10/201136009디버깅 기술: 34. Windbg - ERROR: Unable to load DLL mscordacwks_x86_x86_2.0.50727.4200.dll, Win32 error 0n2 [1]
993정성태2/10/201128345개발 환경 구성: 107. 하나의 WPF 프로젝트를 WinExe / Library로 빌드하는 방법
992정성태10/15/201129198개발 환경 구성: 106. VSS(Volume Shadow Service)를 이용한 Hyper-V VM 백업/복원 [2]
991정성태2/6/201148667개발 환경 구성: 105. 풀 덤프 파일을 남기는 방법 [4]
990정성태2/2/201133813개발 환경 구성: 104. Visual C++ Custom Build Tool 사용예 [1]파일 다운로드1
989정성태2/1/201130327개발 환경 구성: 103. DOS batch - 동기 방식으로 원격 서비스 제어
988정성태1/30/201126548개발 환경 구성: 102. MSBuild - DefineConstants에 다중 전처리 값 설정
987정성태1/29/201139686디버깅 기술: 33. PDB Symbol 로드 오류 - Cannot find or open the PDB file. [2]
986정성태1/26/201131136.NET Framework: 204. 분리된 ThreadPool 사용 - Smart Thread Pool
985정성태1/25/201127726디버깅 기술: 32. 인증서로 서명된 닷넷 어셈블리의 실행 지연 현상
984정성태1/25/201122416개발 환경 구성: 101. SharePoint 2010 - Form Design
983정성태1/23/201127475제니퍼 .NET: 15. 눈으로 확인하는 maxWorkerThreads, minFreeThreads 설정값 [1]
982정성태1/22/201124838개발 환경 구성: 100. SharePoint 2010 - iPad 친화적인 게시판 만들기 (사용자 지정 목록) [1]
981정성태1/19/201120689개발 환경 구성: 99. SharePoint 2010 - 웹 애플리케이션 생성 시 고려해야 할 점. [1]
980정성태1/19/201132193개발 환경 구성: 98. SharePoint 2010 - Office Web Apps 설치
979정성태1/18/201124829개발 환경 구성: 97. SharePoint 2010 팀 사이트 구성
978정성태1/16/201131785.NET Framework: 203. VPN 자동 연결 및 Router 설정 추가
977정성태1/12/201131152개발 환경 구성: 96. SharePoint 2010 설치 [5]
976정성태1/11/201153746오류 유형: 111. IIS - 500.19 오류 (0x8007000d)
975정성태1/10/201128060.NET Framework: 202. CLR JIT 컴파일러가 생성한 기계어 코드 확인하는 방법 [3]파일 다운로드1
974정성태1/8/201126809.NET Framework: 201. 윈폼 TreeView - Bold 폰트 설정 후 텍스트가 잘리는 문제 [1]파일 다운로드1
973정성태1/7/201126085.NET Framework: 200. IIS Metabase와 ServerManager 개체 활용파일 다운로드1
972정성태1/7/201124104개발 환경 구성: 95. SQL Server 2008 R2 이하 버전 정보 확인
971정성태1/5/201133667.NET Framework: 199. .NET 코드 - Named Pipe 닷넷 서버와 VC++ 클라이언트 제작 [2]파일 다운로드1
970정성태1/4/201134216.NET Framework: 198. 윈도우 응용 프로그램에 Facebook 로그인 연동 [1]파일 다운로드1
... 151  152  153  154  155  156  157  158  159  160  161  [162]  163  164  165  ...