2012-03-07 2 views
5

부분 메소드가 리턴 유형을 void로 가질 수 있다는 사실 뒤에 논리/장애물이있는 이유는 무엇입니까?부분 메소드가 반환 유형을 void로만 가질 수있는 이유는 무엇입니까?

감사합니다.

+1

[부분 메소드가 무엇을 반환 할 수없는 이유는 무엇입니까?] (0120-337-331) – BoltClock

+0

부분 메소드 무효 반환 유형을 사용할 수 있습니까? 그들은'default (T)'또는 무엇을 돌려 주어야합니까? – CodesInChaos

답변

9

부분 메소드는 구현을 제공하지 않은 경우 생략되도록 설계되었습니다. 컴파일러는 실제로 구현되지 않은 부분 메소드에 대한 호출을 제거합니다.

이것은 또한 아무것도 반환 할 수없는 이유를 강조합니다. 부분 메서드를 구현하지 않고 반환 값에 의존한다면 무엇입니까? 코드에 명확하게 과제가 표시되어 있음에도 불구하고 무언가가 초기화되지 않았을 것입니다.

+0

마지막으로 내 소식과 함께 이해합니다. 다른 곳에서 대답을 찾는 데 어려움이있었습니다. 감사! – ckv

0

구현되지 않은 부분 메소드는 컴파일시 제거됩니다. 컴파일러는 이미 존재하는 객체의 상태 만 수정하기 때문에 void 메쏘드에 대한 호출을 무시할 수 있습니다. 객체를 반환하는 메소드는 코드를 무효화 할 수 있으므로 제거 할 수 없습니다.

2

부분적인 방법의 구현은 선택적으로 의도된다.

구현을 제공하지 않으면 호출이 여전히 유효하지만 컴파일러에서 자동으로 제거됩니다. 대리자는 구현 된 부분 메서드 만 할당 할 수 있습니다.

즉, 실제로는 반환 값이나 "out"매개 변수가 없으며 가상 일 수없고 항상 비공개입니다.

기타 here.

관련 문제