web-dev-qa-db-ja.com

キャスティングとasのC#の違いは?

重複の可能性:
c#の次のキャストの違いは何ですか?

C#では、オブジェクトのキャストとasキーワードの使用に違いはありますか?うまくいけば、このコードは私が何を意味するかを説明するでしょう...

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

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

ありがとう

:)

41
user110714

as は決して InvalidCastException をスローしません。代わりに、キャストが失敗した場合はnullを返します(例のNullReferenceExceptionobjでない場合は、 string になります)。

84

すでに述べたInvalidCastException以外...

asは、ターゲットタイプが値タイプの場合は機能しません(null許容でない場合)。

obj as int // compile time error.
19
Mehrdad Afshari

私の知る限りでは!

'as'を使用すると、 'cast'が失敗した場合にnullが返され、キャストが失敗した場合にキャストが例外をスローします。

8
Lewis

Objが文字列でない場合、「as」を使用しても例外はスローされません。代わりに、nullを返します。このnull値をすぐに参照しているため、この場合でも例外がスローされます。

5
Paul Mitchell