ReSharper 2026.1 Help

コードインスペクション:安全なキャスト式は常に成功する。

参照変数を派生型から基本型に、またはその逆に安全にキャストするために、 演算子として使用できます。 安全には、コードが例外をスローしないことを意味しますが、キャストを実行できない場合は、値を割り当てる変数に null が割り当てられます。

タイプに 互換性がある場合、 as を使用した安全なキャストは常に成功するため、この場合、 冗長なキャストによってパフォーマンスが低下する可能性があるため、明示的なキャストで十分です。

ベース型の変数が派生型との互換性についてすでにチェックされている場合、ベースから派生型へのキャストは冗長になる可能性があります。 以下の例では、 string str の割り当ては、 obj の型が string であり、 null ではない場合にのみ可能です。 直接キャストを使用するか、このコードを書き直して、キャストと null チェックを分離することができます。

public void Test(object obj) { if (obj is string) { string str = obj as string; } }
public void Test(object obj) { if (obj is string) { string newStr = (string) obj; } }

ベースから派生型への変換に安全なキャストが使用されている場合、まったく必要ありません(コンパイラーは暗黙的にキャストを実行します)ため、安全に削除できます。

2026 年 6 月 12 日