我使用SQLMetal生成了一些代码并使用了一段时间。刚才,我查看了生成的代码,并在每个类中喜欢了一些我从未实现的部分函数,也没有通过SQLMetal实现。这些函数在代码中调用。我想知道 - 当我调用这样的函数时会发生什么 - 这不存在?
答案 0 :(得分:5)
在代码中调用了这些函数。我想知道 - 当我调用这样的函数时会发生什么 - 这不存在?
编译器完全删除了调用。为了调用方法而被评估的任何表达式也被删除 - 所以如果你有这个:
SomePartialMethod(ComputeSomeValue());
且SomePartialMethod
未实现,ComputeSomeValue
将不会被调用。
如果未实现该方法,则编译器将删除方法签名以及对该方法的所有调用。对方法的调用(包括在调用中对参数求值时发生的任何结果)在运行时无效。因此,即使未提供实现,分部类中的任何代码也可以自由地使用部分方法。如果调用该方法但未实现该方法,则不会产生编译时或运行时错误。