为什么局部方法只能具有void返回类型的原因/逻辑/障碍是什么?
谢谢。
Partial methods(局部方法)旨在如果您没有为其提供实现,则可以将它们省略。编译器会删除未实现的部分方法的调用。
这也强调了它们为什么不能返回任何内容的原因: 如果您依赖于返回值而没有实现这个部分方法,那怎么办呢? 您将得到未初始化的结果,尽管代码明确显示了一个赋值语句。
同样地,使用Conditional属性的方法也只能返回void
,原因是方法调用可能存在于已编译的IL中,也可能不存在。
部分类方法的实现是可选的。
如果没有提供实现,调用仍然有效,但编译器会自动删除。只有实现了部分类方法才能将其分配给委托。
这意味着它们不应该有副作用 - 实际上没有返回值或“out”参数,它们不能是虚拟的,并且始终是私有的。
更多信息在这里。
未实现的部分类方法在编译时被移除。编译器可以忽略对void方法的调用,因为它们只修改已经存在对象的状态。它不能移除返回对象的方法,因为那样会使代码无效。
default(T)
还是什么? - CodesInChaos