为什么部分方法只能有void返回类型?

时间:2012-03-07 11:25:56

标签: c# .net clr partial-methods

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

感谢

3 个答案:

答案 0 :(得分:11)

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

这也突出了为什么他们不能返回任何东西:如果你依赖一个返回值而没有实现部分方法,那么呢?尽管代码清楚地显示了作业,但你还是有一些未初始化的东西。

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

答案 1 :(得分:3)

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

如果未提供实现,则调用仍然有效,但编译器将以静默方式删除。委托只能分配一个实现的部分方法。

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

更多here

答案 2 :(得分:0)

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