【发布时间】:2009-07-28 10:48:27
【问题描述】:
例如,我有一个名为 MyObjectType 的类,我想将事件的 sender 参数转换为这种类型。我通常会这样做:
MyObjectType senderAsMyType = (MyObjectType) sender;
我最近意识到也可以这样做:
MyObjectType senderAsMyType = sender as MyObjectType;
哪种方式最有效?这样我就可以使我的代码保持一致并始终使用其中一种方式。还是他们都有优点和缺点?如果是这样,请有人告诉我他们。
再次感谢,
【问题讨论】:
-
没有人提到的重要一点是强制转换和“as”不做同样的事情。例如,如果您有一个用户定义的从 Foo 到 Bar 的显式转换,那么“(Bar)foo”会调用转换方法,但“foo as Bar”不会。确保您选择的选项实际上可以满足您的需求。让它正确,然后明确,然后才考虑让它更快。