>>4
dynamic_cast/static_cast/reinterpret_cast/const_cast
C++だとこの4つに区分けしたわけだが、
dynamic_castとstatic_castは危険なキャストでなく、
コンパイラもプログラマも混同することはないため、
この2つにはC-Typeのキャストですませることが多い。(異論もあるだろうけど)
C#はキャストのタイプはdynamic_castとstatic_castの2つだけなので、
無駄に構文を増やさずC-Typeのキャストだけで行くことに決めたのだと思うな。

余談だが、継承関係にあるクラス間でexplicit/implicitで変換演算子を定義すると
変なことになる予感もする。DirectCastがあるとこの辺の混乱が防げる??