キャストとAS演算子のどちらのほうが簡潔な記述ができるのかということにはしばしば悩まされていたりします。
たとえば、
MainForm mainform = (MainForm)this.ParentForm;
MainForm mainform = this.ParentForm as MainForm;
とか。
値型や列挙型の場合選択の余地などないのですが、COM(や.NETなのに返り値が意味不明にObject型だったりパブリックメンバ名の先頭が小文字だったりする某巨大DLL)を扱う場合は多重キャストが必要な場合が多いので結構迷います。
ひどい時には
mshtml.HTMLAnchorElement aelm = ((html.Document.getElementByTagName("p") as mashtml.HTMLElementCollection).item(0,1) as mashtml.HTMLParagraphElement).childNodes.item(0,5) as mshtml.HTMLAnchorElement;
みたいなことになります(ちなみにこのコードは未検証です)。
Xpathが使えれば少しはマシなのですが。
結論的には使用可能ならばAS演算子を使ったほうが簡潔に見える気がします。