重複の可能性:
c#の次のキャストの違いは何ですか?
C#では、オブジェクトのキャストとas
キーワードの使用に違いはありますか?うまくいけば、このコードは私が何を意味するかを説明するでしょう...
String text = "Hello hello";
Object obj = text;
String originalCast = ((String)obj).ToUpper();
String originalAs = (obj as String).ToUpper();
ありがとう
:)
as
は決して InvalidCastException
をスローしません。代わりに、キャストが失敗した場合はnullを返します(例のNullReferenceException
がobj
でない場合は、 string
になります)。
すでに述べたInvalidCastException
以外...
as
は、ターゲットタイプが値タイプの場合は機能しません(null許容でない場合)。
obj as int // compile time error.
私の知る限りでは!
'as'を使用すると、 'cast'が失敗した場合にnullが返され、キャストが失敗した場合にキャストが例外をスローします。
Objが文字列でない場合、「as」を使用しても例外はスローされません。代わりに、nullを返します。このnull値をすぐに参照しているため、この場合でも例外がスローされます。