双支架铸造

本文关键字: | 更新日期: 2023-09-27 18:35:49

通过这样的东西实现正常施法

(int)foo;

但是我遇到了一段代码,我发现:

((IFoo)object).Method();

我不明白这里发生了什么,尽管在智能意义上我可以在界面上看到暴露的方法。如果我这样做,我就无法得到(IFoo)foo;

谢谢

双支架铸造

这是关于运算符优先级的。在

(IFoo)foo.Bar();

成员访问运算符.具有优先级,因此首先对其进行评估。 调用foo.Bar()并将结果转换为 IFoo

((IFoo)foo).Bar();

括号建立不同的优先级。 foo首先投IFoo,然后IFoo Bar()调用它。

这可能是一种非常常见的技术,所以很好的问题。随着时间的推移,你会看到更多这样的情况。:)

在给出的例子中...

((IFoo)foo).FooMethod();"

。Foo 对象正在强制转换为 IFoo 接口。然后,调用 IFoo 接口的 FooMethod()。括号确保强制转换首先发生,以确保在对象强制转换到适当的接口后在对象上调用该方法。正如 Greg 正确指出的那样,这只是关于运算符优先级。

相关文章:
  • 没有找到相关文章