2013-09-30 3 views
1

SQLMetal을 사용하여 코드를 생성하고 얼마 동안 작업했습니다. 지금은 생성 된 코드를 살펴 보았고 각 클래스에 몇 가지 부분 함수를 추가하고 구현하지 않았으며 SQLMetal로 구현하지도 않았습니다. 이 함수는 코드에서 호출되었습니다. 나는 그와 같은 기능을 호출 할 때 무슨 일이 벌어 지는지 궁금합니다. 그것은 존재하지 않습니다.부분적인 방법을 구현하지 않으면 어떻게됩니까?

답변

5

이러한 함수는 코드에서 호출되었습니다. 나는 그와 같은 기능을 호출 할 때 무슨 일이 벌어 지는지 궁금합니다. 그것은 존재하지 않습니다.

호출은 컴파일러에서 완전히 제거됩니다.

SomePartialMethod(ComputeSomeValue()); 

및 구현되지 SomePartialMethod, ComputeSomeValue가 호출되지 않습니다 : 당신이 그래서 만약 - 메소드를 호출하기 위해 평가되는 모든 표현도 제거됩니다.

또는 MSDN puts it

: 메소드가 구현되어 있지 않은 경우

후 컴파일러는 방법 서명 및 방법에 대한 모든 호출을 제거합니다. 호출에서 인수를 평가할 때 발생하는 결과를 포함하여 메소드 호출은 런타임에 영향을주지 않습니다. 따라서 부분 클래스의 모든 코드는 구현이 제공되지 않아도 부분 메서드를 자유롭게 사용할 수 있습니다. 메서드가 호출되었지만 구현되지 않은 경우 컴파일 타임이나 런타임 오류가 발생하지 않습니다.

관련 문제