如果我没有实现部分方法会发生什么?

时间:2013-09-30 15:54:51

标签: c# partial

我使用SQLMetal生成了一些代码并使用了一段时间。刚才,我查看了生成的代码,并在每个类中喜欢了一些我从未实现的部分函数,​​也没有通过SQLMetal实现。这些函数在代码中调用。我想知道 - 当我调用这样的函数时会发生什么 - 这不存在?

1 个答案:

答案 0 :(得分:5)

  

在代码中调用了这些函数。我想知道 - 当我调用这样的函数时会发生什么 - 这不存在?

编译器完全删除了调用。为了调用方法而被评估的任何表达式也被删除 - 所以如果你有这个:

SomePartialMethod(ComputeSomeValue());

SomePartialMethod未实现,ComputeSomeValue将不会被调用。

MSDN puts it

  

如果未实现该方法,则编译器将删除方法签名以及对该方法的所有调用。对方法的调用(包括在调用中对参数求值时发生的任何结果)在运行时无效。因此,即使未提供实现,分部类中的任何代码也可以自由地使用部分方法。如果调用该方法但未实现该方法,则不会产生编译时或运行时错误。