2017-03-06 8 views
-4

を返すので、基本的にはC#の学習を始めました。昨日、メソッドについて学ぶ機会がありました。私は戻り値が有用かどうか、あるいは何のために混乱していましたか?キーワードの一部として空白を持つメソッドに戻り、私は空白が "何もしないか、何も返さない"というようなことを知っています。C#メソッドは、

無効であることをよく知っています。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ConsoleApplication6 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Add(2,2); 
     } 

     static int Add(int numberOne, int numberTwo) 
     { 
      Console.WriteLine(numberOne + numberTwo); 
      return numberOne + numberTwo; 

     } 
    } 
} 

このコードで有用な「numberOne + numberTwoを返す」されてどのように、私はちょっとこだわっていると私はリターンを必要とするなぜ私は精神的なブロックを持っています。 私はこのコードを実行したときに、私は何か(4)

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading; 
using System.IO; 
using System.Net; 

namespace MethodsTutorial 
{ 
    public class Program 
    { 
     static void Main(string[] args) 
     { 
      Console.WriteLine("I'm about to go into a method."); 

      DoSomethingAwesome(); 

      Console.WriteLine("I'm back from the method."); 
     } 

     static void DoSomethingAwesome() 
     { 
      Console.WriteLine("I'm inside of a method, doing something awesome!"); 
     } 
    } 
} 

そして、なぜこのコードでは私も何かを得た(「私はメソッドの内部でね、すごい何かをやって!」)と私にはないの取得キーワード返信を最後に使用して、私が自分自身を十分に説明しているかどうかわかりません(英語が私の母国語でない場合は申し訳ありません)。しかし、私はちょうど返品方法について基本的でよく説明が必要です有用なもの、それらをいつ、どのように使用するのか、そしていつそれらを使用しないのかということです。にDoSomethingAwesome方法版画ので

この値を
"I'm inside of a method, doing something awesome!" 

を:文を書くことで結果、メインProgram

DoSomethingAwesome(); 

+0

IMOでは、基本的にメソッドのコンテキスト内のものを変更する場合にのみ戻り値の型を使用します。出力を返すだけです。他の場所(グローバル変数など)にアクセスできるものを設定したい場合は無効にしてください。 – Barak

+0

@oneWhisper。 .. ** Ed Hastings **(http://softwareengineering.stackexchange.com/questions/180804/what-is-the-reason-behind-methods-with-return-values-and-methods-with-void)読んだら助けてください。 –

+0

もしあなたが初心者でないなら、別の言語を作成すると、 'return'式を省略できますか? –

答えて

0

はメソッド呼び出し...ありがとうたとえそれが何らかの値を返さなくても(それはvoidメソッドです)。

このメソッドは、と呼んでいるため、値が返されないという事実にかかわらず、単にというアクションを実行します。あなたは、その値を使用したい場合は、返される文字列として、それは次のようになります。

public class Program 
    { 
     static void Main(string[] args) 
     { 
      Console.WriteLine("I'm about to go into a method."); 

      string result = DoSomethingAwesome(); 

      Console.WriteLine("I'm back from the method."); 
     } 

     static string DoSomethingAwesome() 
     { 
      return "I'm inside of a method, doing something awesome!"; 
     } 
    } 
0

メソッドの戻り値の型は、呼び出し側が期待すべきかを宣言します。戻り値の型がvoidのメソッドが宣言されている場合は、何も返されないので、voidのメソッドのreturnステートメントを使用する必要はありません。何も返されていないためです。以下の場合には

、あなたが持っている:

static int Add(int numberOne, int numberTwo) 
{ 
    Console.WriteLine(numberOne + numberTwo); 
    return numberOne + numberTwo; 

} 

これは、メソッドがそれを呼び出している誰に整数を返すAddことを意味します。

あなたの主な機能から、あなたが呼び出す:

Add(2,2); 

これは(それを捨てる)は、関数を呼び出しているが、あなたは結果を何もしていないことを意味します。代わりに、実行します。あなたが行うことができますので

int result = Add(2, 2); 

整数(この場合は4)を返されたが、resultに格納されます。

Console.WriteLine("The method returned {0}", result); 
0

方法それらのからデータを取得するためのリターンでお願いします。 がint c = a + bの場合は、あなたが方法のうち、新しい値を取得するためにint c = Add(a, b)

ように書かれるでしょう、あなたの方法static int Add(int a, int b)、同様に考えることができ、この方法では、値を返すことができる必要がありますこの場合、発信者はcに割り当てられます。

頻繁に使用されるコード部分を分離したり、大きなコードを分かりやすく分かりやすいコードに分けたりするのがポイントです。

Documentationをご覧ください。

0

ここでの質問は、基本的にはC#に関連するものではなく、ほとんどすべてのプログラミング言語がメソッドでreturnを使用しています。

基本的にreturnは、メソッドの実行を終了することを示します。今すぐあなたがvoidメソッドを持っている場合、これは実行から値を返さないメソッドです。 void以外に、メソッドは必要な型を返すことができます。

ここにはvoidという基本的な方法があります。

class Program 
{ 
    static void Main() 
    { 
     Calculate(1 , 2); 
    } 

    static int c = 0; 

    static void Calculate(int a, int b) 
    { 
     c = a + b; 
    } 

} 

は今私の Calculate方法で私は a + bの合計に私のフィールド cの値を設定しています。これは基本的ですが、voidメソッドは値を返すのではなく、値を変更しています( c)。
class Program 
{ 
    static void Main() 
    { 
     c = Calculate(1 , 2); 
    } 

    static int c = 0; 

    static int Calculate(int a, int b) 
    { 
     return a + b; 
    } 

} 

はどこ Calculate方法は今 a + bの和である intを返してわかります。

は、今は、このように書くことができます。これは呼び出し元のメソッドから cに割り当てられています。

なぜどちらの場合も使用してください。最初の例では、メソッドCalculate()は、どの変数がメソッドの結果を保持するべきかを知っていました。したがって、それは合計にcを設定します。 2番目の例では、Calculateメソッドは、単にa + bの合計を返します。

さらに複雑な例に移ります。計算を管理する責任がある計算機クラスを構築するとします。使用することができ

class Calculator 
{ 
    int sum = 0; 

    public void Add(int a) 
    { 
     sum += a; 
    } 

    public void Subtract(int a) 
    { 
     sum -= a; 
    } 

    public int GetTotal() 
    { 
     return sum; 
    } 
} 

static void Main() 
{ 
    var calculator = new Calculator(); 
    calculator.Add(5); 
    calculator.Subtract(10); 
    int total = calculator.GetTotal(); 
} 

再び基本だが、今、私たちは3つの方法があります。 Add,SubtractおよびGetTotalAddSubtractは両方とも、sumフィールドで操作を実行するため、無効なメソッドです。合計はGetTotalであり、合計はreturnです。

これは少し役に立ちます。