2013-03-06 79 views
5

對於我來說,很難理解返回聲明究竟做了什麼。例如,在這種方法...C#中的return語句到底做了什麼?

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

即使我把返回之後的任何隨機整數,該GivePoints方法仍然沒有完全一樣的事情。那麼,回報聲明在做什麼?

+2

我不確定如何回答這個問題,而不是說它*返回一個值給調用方法。 – 2013-03-06 02:05:38

回答

0

在你的例子中,函數返回你發送給它的確切數字。在這種情況下,您輸入的值爲amount。因此,當前代碼的返回有點沒有意義。

所以在你的例子:

int x = GivePoints(1000); 

x將等於1000

+0

你應該已經解釋過,返回後的任何東西都不會執行,這似乎是提問者真正的難題。 – Ron 2017-07-06 14:16:58

3

返回調用它時將退出功能。無論如何,下面的return語句都不會被執行。

基本上,return表示函數應該執行的任何操作都已執行,並將此操作的結果返回給調用者(如果適用)。

4

return將從當前方法返回到調用方的控制權,並返回與它一起發送的任何參數。在你的例子中,GivePoints定義爲返回一個整數,並接受一個整數作爲參數。在你的例子中,返回的值實際上與參數值相同。

從代碼中的其他位置使用返回的值,該位​​置調用此示例中定義的方法GivePoints

int currentPoints = GivePoints(1); 

將意味着currentPoints被分配的1

這是什麼打破了到是GivePoints評估值。 GivePoints的評估基於該方法返回的結果。 GivePoints返回輸入,因此,GivePoints將在上面的示例中評估爲1。

+2

+1另一件值得一提的可能是'Stack'概念:在堆棧上調用方法,並且'return'語句退出當前方法,將控制流(通常是一個值)返回到先前的方法堆棧。 – danludwig 2013-03-06 15:01:25

+0

另外,運行返回語句後出現的代碼將被評估。這就是爲什麼你的「隨機整數」值被忽略。 – Heather 2013-03-07 00:37:58

0

只是你原來的目標

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

所以回到返回點

的更新值,如果這不是你的情況猜測的代碼應該是

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