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