"(ListView)发件人"与"发件人作为ListView"

Wri*_*ick 1 c# casting sender

可能重复:
C#"as"施放vs经典施法

这两个表达式有什么区别?

  • (ListView)sender
  • sender as ListView

一般来说,我通常使用exp sender as ListView.但在SO中我发现大多数时候用户使用(ListView)sender.

所以,我想知道哪一个更有效率.

要么,

如果它是编码器的选择,使用哪一个[并且两者的工作方式相同]?

TGH*_*TGH 11

不同之处在于,如果发送方不是ListView,(ListView)发送方将抛出异常,但作为ListView的发送方不会抛出异常,如果转换无效则返回null.


Mac*_*iej 5

不同之处在于,如果由于某种原因,发送方不能转换为ListView,(ListView)sender则会抛出异常,而sender as ListView导致结果为null.