構文:
var d = (IDisposable)foo;
明示的なキャストと呼ばれます。
構文:
((IDisposable)foo).Dispose();
一時変数に明示的にキャストfoo
して呼び出しますDispose
(ここでは一時変数が使用されていますが、表示されません。コンパイラによって作成されます)。
括弧は、コンパイラーにアクションの優先順位を示します。IDisposable
この場合、呼び出しを解決する前に変数をにキャストするように指示されDispose
ます。以前に行われたため、コンパイラーDispose
はタイプの変数を解決することを認識しますIDisposable
。
この動作は他の形式で確認できます。
(foo as IDisposable).Dispose();
または:
string s = null;
while ((s = Console.ReadLine()) != null)
{
}
私の最初の例as
では、自分のキャスト(インライン)と同じ方法で演算子を使用してキャストします。s
2番目の例では、に対してテストを行う前に変数を設定しますnull
。
私の言いたいことは、境界を定義するために角かっこを使用しないと、これらのどれもコンパイルされないということです。