1
我使用SQLMetal生成了一些代碼,並使用它一段時間。就在現在,我查看了生成的代碼,並且喜歡每個類中的一些部分函數,我從未實現,也沒有用SQLMetal實現。這些函數在代碼中被調用。我想知道 - 當我調用這樣的函數時會發生什麼 - 這不存在?如果我不執行部分方法會發生什麼?
我使用SQLMetal生成了一些代碼,並使用它一段時間。就在現在,我查看了生成的代碼,並且喜歡每個類中的一些部分函數,我從未實現,也沒有用SQLMetal實現。這些函數在代碼中被調用。我想知道 - 當我調用這樣的函數時會發生什麼 - 這不存在?如果我不執行部分方法會發生什麼?
這些函數的調用的代碼。我想知道 - 當我調用這樣的函數時會發生什麼 - 這不存在?
呼叫完全由編譯器中刪除。其中,以調用的方法評估的任何表述都刪除過 - 所以,如果你有這樣的:
SomePartialMethod(ComputeSomeValue());
和SomePartialMethod
不落實,ComputeSomeValue
不會被調用。
或者爲MSDN puts it:
如果方法未實現,則編譯器排除方法簽名和方法的所有調用。對該方法的調用(包括在調用中對參數進行評估時發生的任何結果)在運行時不起作用。因此,即使未提供實現,部分類中的任何代碼都可以自由使用部分方法。如果調用方法但未實現,則不會導致編譯時或運行時錯誤。