2011-09-12 4 views
2

가능한 중복은 :
Direct casting vs 'as' operator?
Casting vs using the 'as' keyword in the CLR"개체 유형"과 "((유형) 개체"의 차이점은 무엇입니까?

object myObject = "Hello world."; 
var myString = myObject as string; 

object myObject = "Hello world."; 
var myString = (string)myObject; 

나는 형식 변환이 두 가지 일을 보았다. 그 차이점은 무엇입니까?

+0

제목에 대한 내 기사를 참조하십시오. http://blogs.msdn.com/b/ericlippert/archive/2009/10/08/what-s-the-difference-between-as-and-cast-operators. aspx –

답변

3
var myString = myObject as string; 

런타임 유형은 myobject입니다. 해당 string 경우에만 string 같이 캐스팅, 그렇지 않으면 단순히 null 반환합니다.

var myString = (string)myObject; 

는 소스 유형에서 문자열로 implicit 변환을 찾습니다. 런타임 유형이 string이 아니거나 implicit 변환이 없으면 예외가 발생합니다.

읽기 항목 3 : 빌 와그너에 의해 효과적인 C#을에서을 캐스팅하기 위해 is 또는 as 연산자를 선호.

+0

'(string) myInt'는 myInt의 문자열 값을 반환하지만'myInt as string'은 null을 반환합니까? – Chev

+0

명시 적 변환을 찾습니다. – dlev

+0

@dlev : No ...... – Nawaz

6

"as"는 결과가 null으로 설정되면 실패합니다.

명시 적 형변환은 실패 할 경우 예외를 throw합니다.

+0

고마워! 나는 이것을 결코 깨닫지 못했다. – Chev

1

대상을 대상 유형으로 변환 할 수없는 경우 캐스트가 예외를 throw합니다. as은 단지 null을 반환합니다.

관련 문제