2011-09-12 11 views
2

可能性の重複:
Direct casting vs 'as' operator?
Casting vs using the 'as' keyword in the CLR"type as object"と "((type)object"の違いは何ですか?

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#のからをキャストするisas演算子を好みます。

+0

'(string)myInt'はmyIntの文字列値を返しますが、' myInt as string'はnullを返しますか? – Chev

+0

明示的な変換を探しますか? – dlev

+0

@dlev:いいえ...... – Nawaz

6

"as"は結果がnullに設定されます。

明示的キャストは、失敗した場合に例外をスローします。

+0

ありがとう!私はこれを決して実現しなかった。 – Chev

1

オブジェクトがターゲットタイプにキャストできない場合、キャストは例外をスローします。 asは、ちょうどnullを返します。