9

部分方法只能具有 void 返回类型这一事实背后的 /logic/obstacle 的原因是什么?

谢谢

4

3 回答 3

12

如果您没有为它们提供实现,则部分方法被设计为被忽略。编译器实际上删除了对未实现的部分方法的调用。

这也突出了为什么他们不能返回任何东西:如果你依赖返回值而不实现部分方法,那会怎样?尽管代码清楚地显示了分配,但您仍然有一些未初始化的东西。

同样,使用Conditional属性的方法只能void出于相同的原因返回。方法调用可能存在也可能不存在于编译的 IL 中。

于 2012-03-07T11:30:27.953 回答
3

部分方法的实现是可选的。

如果未提供实现,则调用仍然有效,但会被编译器静默删除。只能为委托分配已实现的部分方法。

这意味着它们应该没有副作用 - 实际上没有返回值或“输出”参数,它们不能是虚拟的,并且始终是私有的。

更多在这里

于 2012-03-07T11:34:23.560 回答
0

未实现的部分方法在编译时被删除。编译器可以忽略对 void 方法的调用,因为它们只修改已存在对象的状态。它不能删除返回对象的方法,因为这会使代码无效。

于 2012-03-07T11:29:44.843 回答