部分方法只能具有 void 返回类型这一事实背后的 /logic/obstacle 的原因是什么?
谢谢
如果您没有为它们提供实现,则部分方法被设计为被忽略。编译器实际上删除了对未实现的部分方法的调用。
这也突出了为什么他们不能返回任何东西:如果你依赖返回值而不实现部分方法,那会怎样?尽管代码清楚地显示了分配,但您仍然有一些未初始化的东西。
同样,使用Conditional属性的方法只能void
出于相同的原因返回。方法调用可能存在也可能不存在于编译的 IL 中。
部分方法的实现是可选的。
如果未提供实现,则调用仍然有效,但会被编译器静默删除。只能为委托分配已实现的部分方法。
这意味着它们应该没有副作用 - 实际上没有返回值或“输出”参数,它们不能是虚拟的,并且始终是私有的。
更多在这里。
未实现的部分方法在编译时被删除。编译器可以忽略对 void 方法的调用,因为它们只修改已存在对象的状态。它不能删除返回对象的方法,因为这会使代码无效。