2009-06-05 10 views
31

可能性の重複:C#の
What is the difference between the following casts in c#?C#と鋳造の違いは?

、オブジェクトをキャストまたはasキーワードを使用して間が違いますか?うまくいけば、このコードは

String text = "Hello hello"; 
Object obj = text; 

String originalCast = ((String)obj).ToUpper(); 
String originalAs = (obj as String).ToUpper(); 

おかげ

:)

+0

正確なデュープ:// stackoverflowの。コム/質問/ 702234 /そして多くの他の多くhttp://stackoverflow.com/questions/2483/casting-newtype-vs-の – annakata

+0

重複-差-間-・イン・C以下-キャスト-ものですobject-as-newtype – pirho

答えて

65

asInvalidCastExceptionをスローすることはありません...私が何を意味するか説明します。キャストが失敗した場合に代わりに、それは(あなたの例ではobjstringなかったらあなたにNullReferenceExceptionを与えることになる)はnullを返します。 objが文字列でない場合は、例外をスローしないだろう「と」を使用し

+0

彼の例はNullReferenceExceptionを与えませんでした。 – Blindy

+2

@Blindy - そうです。彼は潜在的にnullオブジェクトである可能性のあるものについてToUpper()を実行しようとしています。 – rein

+0

ありがとう、ちょっと省略したかもしれないと思った! –

4

。代わりにnullを返します。このnull値をすぐに参照しているので、あなたのケースではまだ例外がスローされます。

7

私が知る限り!

キャストが失敗した場合に、鋳造が例外をスローする場所「キャストが」失敗した場合はnullを返します「と」を使用。すでに述べていますInvalidCastException以外

14

...(それがNULL可能でない限り)、ターゲット型が値型の場合

as

は動作しません:HTTPの

obj as int // compile time error.