2010-04-06 2 views
7

저는 4 년 동안 .NET 응용 프로그램을 개발해 왔습니다. 지금까지 필자가 작성한 클래스에 대한 암시 적 변환은 필요하지 않았습니다.
암시 적 변환을 수행하지 않아도 실생활에서 상황을 제공 할 수 있습니까? 클래스에 대해 암시 적 변환을 얼마나 자주합니까?

은 유형 또는 (바람직하게는 에서) 데이터의 손실 또 다른 유형으로 변환 할 수 있습니다 때

+0

.NET의 숫자 형식을 통해 이미 제공되는 것을 넘어선 실제적인 이유를 생각할 수 없습니다. – leppie

+2

이것은 커뮤니티 위키이어야합니다 (명확한 답이 없음). 또는 언제, 왜해야하는지, 그리고 왜해서는 안되는지 묻기 위해 다시 말하십시오. 그게 더 좋을거야. –

+0

@Martinho 답변은 이미 받아 들여졌고 여전히 커뮤니티 위키가 아니므로 모든 희망은 없어 졌다고 생각합니다. :) – bzlm

답변

4

암시 적 변환 만 정의되어야한다 주셔서 감사합니다. 또 다른 기준은 암시 적 변환이 비교적 저렴해야한다는 것입니다. 왜냐하면 암시 적 변환이 언제 발생하는지 알지 못하기 때문입니다.

예 : 좌표계 간의 변환. 예를 들어 데카르트 좌표로 변환 할 수있는 극좌표 벡터가 편리 할 수 ​​있습니다. 그러나 부동 소수점 반올림 때문에 프로그래머가 변환을 강제 실행하기 위해 타입 변환해야하므로이를 명시 적 변환으로 두는 것이 좋습니다.

동일한 형식으로 데이터를 저장하지만 두 유형 간의 유일한 차이점은 의미 론적 의미 - 사용 방법 또는 의미 의미가있는 경우 암시 적 변환이 필요합니다. 실제 예제 : 동일한 (또는 호환되는) 기본 표현이지만 epoc 시작 날짜 만 다른 datetime 데이터 유형 간의 변환. 이전 코드베이스를 새로운 프레임 워크로 마이그레이션 할 때이 두 프레임 워크 모두 datetime 유형을 정의하지만 의미는 약간 다릅니다. 여기서 암시 적 변환 (전혀 데이터 손실이 없다고 가정)은 아마도 괜찮은 생각입니다.

유형 집합이 있고 형식을 서로간에 변환 할 수있는 방법에 대한 자체 규칙을 정의한 경우 이러한 변환 중 일부는 암시 적 일 수 있으며 변환의 "심각도"에 따라 명시적일 수 있습니다. .NET에서 클래스를 구현할 때 암시 적 변환을 사용하는 주요 인스턴스는 Delphi 런타임 라이브러리에 대해 Win32 Variant 의미를 구현할 때였습니다. Win32 및 Delphi 언어는 함축적으로 수행 할 수있는 Variant 데이터의 변환을 지정합니다.

암시 적 변환을 만들 필요가 없다는 사실은 실제로 좋은 일입니다. 네가 할 수 있다고해서 네가해야한다는 뜻은 아니야. 암시 적 변환은 .NET에서 주로 존재합니다. 다른 프로그래밍 언어가 다른 .NET 언어로 상호 운용되고 이해할 수있는 방식으로 자신의 의미를 표현할 수있게합니다.

+4

BCL의 좋은 예 : 문자열을 XName로 승격. 오직 좋은 것이 이것에서 온다. –

+0

XName은 아름답습니다. XNamespace를 사용하여 빌드하는 방법을 이해하기는 좀 이상하지만 패턴을 얻은 후에는 너무 멋지다. – dthorpe

관련 문제