2

I generated some code using SQLMetal and worked with it for some time. Just now, I looked through the generated code, and fond in each class a few partial functions, that I never implemented, nor were they implemented by SQLMetal. These functions were called in the code. I wonder - whats happening when I call a function like that - that doesn't exist?

4

1 回答 1

6

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

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

SomePartialMethod(ComputeSomeValue());

并且SomePartialMethod没有实现,ComputeSomeValue不会被调用。

或者正如MSDN 所说

如果方法未实现,则编译器删除方法签名和对该方法的所有调用。对方法的调用,包括调用中的参数评估可能产生的任何结果,在运行时都没有影响。因此,分部类中的任何代码都可以自由使用分部方法,即使没有提供实现。如果方法被调用但未实现,则不会导致编译时或运行时错误。

于 2013-09-30T15:55:28.813 回答