2013-03-06 16 views
5

返信文が正確に何をしているのかを理解することは難しいです。例えば、この方法では...return文はC#で正確に何をしますか?

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は整数を返し、整数を引数として受け入れるように定義されています。あなたの例では、返される値は実際には引数の値と同じです。

A戻り値は、この例で定義されたメソッド、GivePointsを呼び出すコード内のどこかから使用されています。

int currentPoints = GivePoints(1); 

currentPointsが、これはGivePointsが評価されていることであるに破壊する何1.

の値が割り当てられますことを意味します。 GivePointsの評価は、メソッドが返すものに基づいています。 GivePointsは入力を返します。したがって、上記の例ではGivePointsは1と評価されます。

+2

+1もう一つの良い点は、スタック上でメソッドが呼び出され、 'return'ステートメントが現在のメソッドを終了し、コントロールフロー(通常は値)を前のメソッドに戻すというStackコンセプトですスタック – danludwig

+0

また、return文の実行後に表示されるコードは評価されません。そのため、あなたの「乱数」の値は無視されます。 – Heather

0

あなたの本来の目的のためだけに推測

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

ので、私はこれがあなたのケースではない場合、コードは

public void GivePoints(int amount) 
{ 
    Points -= amount; 
} 
関連する問題