【发布时间】:2012-06-27 20:50:42
【问题描述】:
在浏览一些教程时,我遇到了这样的行:
((IDisposable)foo).Dispose();
忽略对 Idisposable 的具体引用。我很好奇为什么括号设置它们的方式以及它们包含/做什么。我确信这是一个非常简单的问题,但是由于这种语法的泛型,我一直无法通过搜索找到答案。非常感谢您的帮助,谢谢。
【问题讨论】:
-
您可能想知道为什么在调用 Dispose 之前需要强制转换,因为您可能已经静态地知道
foo是IDisposable。如果foo的,类型显式实现了IDisposable,那么就不能直接调用foo.Dispose(),需要先做这个转换。 msdn.microsoft.com/en-us/library/ms173157.aspx(@EugenRieck 的回答回答了语法,这是主要部分,我认为这更适合作为评论) -
为了进一步扩展@TimS 的评论,该对象也不一定在您正在转换的对象的继承链中,因为自定义显式或隐式转换运算符可以允许您转换为/从完全不相关类型(尽管它有限制,例如不允许使用接口)。
标签: c# syntax parentheses