为什么分部方法必须是空的?

本文关键字:方法 为什么 | 更新日期: 2023-09-27 18:04:40

我目前正在学习c#,这本书叫做《Beginning Visual c# 2010》,我正在阅读讨论部分方法和类的不同方面和特征的章节。

引用这本书:

现在考虑为什么分部方法不能有返回类型。如果你能回答你的自己满意,你就可以确信你完全理解了这个话题——所以这是留给你的练习。"

这就是我卡住的地方。我能想到的唯一原因是,当方法的返回值在代码中被赋值时,如果没有为分部方法实现定义,它将生成一个错误。

有人能帮我澄清一下这个话题吗?

为什么分部方法必须是空的?

因为对它们的调用不能从调用代码中消除,以防它们没有在不破坏它的情况下实现。

的例子:

partial void foo();
partial int bar();

调用代码:

...
foo(); // successfully removed if foo isn't implemented
int x = bar() * 2; // what to do here?
Console.WriteLine(x);

注意,从2020年c# 9.0开始,partial方法不再需要返回void。当然,这也意味着c#编译器必须能够保证另一个"部分"具有该方法的实现的实际存在的(可能是由某些魔术生成的)。