2010-11-25 5 views

답변

159

이것은 conversion operator이다합니다 ((type) 변환 구문 필요한 명시 연산자는 대조적으로)

XmlBase xmlBase = WhatEverGetTheXmlBase(); 
XElement xelement = xmlBase; 
//no explicit convert here like: XElement xelement = (XElement)xmlBase; 
+5

+1. 나는 때때로 암시 적 변환의 좋은 사용법이 있지만 이상하거나 놀라운 버그를 유발할 수 있으며 (인간) API 사용자를 혼동시킬 수 있다고 덧붙였다. 예를 들어, BCL에서 암시 적 변환의 사용법은 거의 없습니다. 신중하게 사용하십시오! –

8

암시 적 연산자는 XmlBase을 암시 적으로 XElement으로 변환 할 수 있음을 의미합니다.

+0

아무도 내 대답을 잘못 말할 수 있습니까? 이 명시 적 변환이 –

+0

어쨌든 작동 할 수 있습니까? 'XElement xelement = (XElement) xmlBase;'그것은 정적이라고 말하면서 정적이어야합니다. 정적이 아니므로 인스턴스화 할 수 있습니까? – aspiring

2

은 암시 적 변환 연산자이다. 이 코드를 쓸 수 있다는 것을 의미합니다 :

XmlBase myBase = new XmlBase(); 
XElement myElement = myBase; 

그리고 컴파일러는 불평하지 않습니다! 런타임에 변환 연산자가 실행되고 인수로 myBase을 전달하고 유효한 XElement을 결과로 반환합니다.

그것은 컴파일러 알려줄 수있는 개발자로 당신을위한 방법이다

:

을 "이 두 가지 전혀 관련이없는 종류의 모습에도 불구하고, 실제로 다른 하나에서 변환하는 방법은, 그냥 저를 보자 그것을하는 방법에 대한 논리를 처리하십시오. "

관련 문제