2

違いは何ですか

string url =(string)data AND string url = data as string;

どちらがより良い方法ですか?

4

3 に答える 3

6

InvalidCastException最初の構文は、キャストが失敗した場合にをスローしますが、変数が文字列でないas場合、演算子はnullを返します。data

どちらがより良い方法ですか?

それはあなたが達成しようとしていることに依存します。

于 2012-06-11T06:29:52.097 に答える
3

オブジェクトを特定のタイプにキャストasする試みと考えてください。失敗した場合、結果の変数はを保持しnullます。一方、直接キャストは1 way ticketキャストであり、失敗すると例外がスローされます。

基本的に、オブジェクトを特定のタイプにキャストできる場合はまったく同じことを行いますが、キャストが無効な場合、一方は例外をスローし、もう一方は「正常に失敗」します。

どちらを使用するかは、実際にはシナリオによって異なります。変数がコードの不可欠な部分である場合(つまり、キャストが失敗した場合に続行するコードを続行する意味がない場合)、直接キャストを使用して例外を処理します。ただし、例外をスローせず、null値を処理することも非常に役立つ場合があります。

于 2012-06-11T06:36:56.467 に答える
1

キーワードは防御キャストであるため、キャストに例外がある場合でも例外をスローしません

于 2012-06-11T06:32:31.520 に答える