2013-03-06 3 views
5

반환 진술이 정확히 무엇을하고 있는지 파악하는 것은 어렵습니다. 예를 들어,이 메서드에서 ...C#에서 return 문은 정확히 무엇을합니까?

public int GivePoints(int amount) 
    { 
     Points -= amount; 
     return amount; 
    } 

반환 후 임의의 정수를 배치해도 GivePoints 메서드는 여전히 똑같은 작업을 수행합니다. return 문이 수행하는 작업은 무엇입니까?

+2

난해야 호출자 메서드에 값을 반환한다고 말하는 것 이외에이 질문에 대답하는 방법을 모를 경우. –

답변

0

예를 들어, 함수는 보내고있는 정확한 숫자를 반환합니다. 이 경우 값을 amount으로 전달하면됩니다. 따라서 현재 코드에서 반환 값은 약간 의미가 없습니다. 그래서 예에서

:

int x = GivePoints(1000); 

x가 그것을 호출 할 때 기능을 종료합니다 1000

+0

당신은 반환 후 아무것도 실행되지 않을 것이라고 설명 했어야합니다. 이것은 질문자의 진정한 수수께끼 인 것 같습니다. – Ron

3

돌아 동일합니다. return 문 아래에있는 것은 실행되지 않습니다.

기본적으로 return은 함수가 수행해야하는 모든 작업이 수행되었음을 나타내며이 작업의 결과를 호출자에게 돌려줍니다 (해당되는 경우).

4

return은 현재 메서드에서 호출자에게 컨트롤을 반환하고 전달 된 모든 인수를 다시 전달합니다. 귀하의 예제에서 GivePoints은 정수를 반환하고 정수를 인수로 허용하도록 정의됩니다. 귀하의 예제에서 반환 된 값은 실제로 인수 값과 같습니다.

반환 된 값은 정의 된 메서드 인 GivePoints을 호출하는 코드의 다른 곳에서 사용됩니다.

int currentPoints = GivePoints(1); 

currentPoints이 아래로 나누기 GivePoints 평가된다 무엇 1.

의 값이 할당됩니다 것을 의미합니다. GivePoints의 평가는 메서드가 반환하는 내용을 기반으로합니다. GivePoints은 입력을 반환하므로 위의 예에서 GivePoints은 1로 평가됩니다.

+2

+1 언급할만한 또 다른 좋은 점은'Stack' 개념 일 수 있습니다. 스택에 메소드가 호출되고'return' 문이 현재 메소드를 종료하고 제어 흐름 (일반적으로 값)을 이전 메소드로 되 돌립니다. 스택 – danludwig

+0

또한 return 문이 실행 된 후에 나타나는 코드는 평가되지 않습니다. 그래서 "임의의 정수"값은 무시됩니다. – Heather

0

이 귀하의 경우가 아닌 경우 포인트

의 업데이트 된 값을 반환합니다 원래 목표 그래서

public int GivePoints(int amount) 
{ 
    Points -= amount; 
    return Points; 
} 

반환 단지 추측 코드는

public void GivePoints(int amount) 
{ 
    Points -= amount; 
} 
관련 문제