3

Visual Studio 2010 Express で「到達不能なコードが検出されました」という警告を回避する方法を教えてください。マニュアルからC#を学んでいます。簡単なメソッドを作る練習です。本に書かれているとおりに例を正確に入力しています。ありがとう。

public class Multiply 
{
    //Multiplies argument by 4 

    public static int MultiplyBy4(int aNumber)
    {
        return 4 * aNumber;
        //Shows ways of passing various arguments to a method public static void Main
        int x = 7;
        int y = 20;
        int z = -3;
        int result = 0;

        result = MultiplyBy4(x);
        Console.WriteLine("Passsing a variable, x : {0}", result);

        result = MultiplyBy4(y + 2);
        Console.WriteLine("Passing an expression, Y + 2: {0}", result);

        result = 5 + MultiplyBy4(z);
        Console.WriteLine("Using MultiplyBy4 in an expression: {0}", result);
        Console.ReadLine();
    }
 }

パラメータと戻り値を使用してメソッドを作成した後、「さまざまな引数をメソッド public static void Main に渡す方法を示します」というマニュアルの解説がわかりません。MultiplyBy4 メソッドに x、y、z を "aNumber" として認識させるにはどうすればよいですか? 多分これは遅れた質問ですが、私はここで立ち往生しています。ありがとう。

4

5 に答える 5

8

コメント行がめちゃくちゃで、Main メソッドの定義が含まれています。コードは次のようになります。

    public class Multiply 
{
        //Multiplies argument by 4 
        public static int MultiplyBy4(int aNumber)
        {
            return 4 * aNumber;
        }

        //Shows ways of passing various arguments to a method
        public static void Main(string[] args)
        {
                int x = 7;
                int y = 20;
                int z = -3;
                int result = 0;

                result = MultiplyBy4(x);
                Console.WriteLine("Passsing a variable, x : {0}", result);

                result = MultiplyBy4(y + 2);
                Console.WriteLine("Passing an expression, Y + 2: {0}", result);

                result = 5 + MultiplyBy4(z);
                Console.WriteLine("Using MultiplyBy4 in an expression: {0}", result);
                Console.ReadLine();
            }
 }
于 2014-01-13T14:13:43.217 に答える
4

return ステートメントはここで関数を終了しています。

したがって、x、y、z および結果の宣言と、Console.Write実行されることはありません...

于 2014-01-13T14:09:02.117 に答える
0

Any statements after return statement is unreachable. It will never gets executed and the compiler informs you.

It is a compile-time warning if a statement cannot be executed because it is unreachable

Unreachable Statements MSDN

于 2014-01-13T14:10:01.323 に答える
0

これは、関数内にあるコードの前に関数を終了するため、コードが関数の各行を実行する方法がないためです。

   public class Multiply 
  {
//Multiplies argument by 4 

           public static int MultiplyBy4(int aNumber)
            {
                return 4 * aNumber; // <---- You exit the function MultiplyBy4 here

               // Everything beneath this line will never get executed
               // --------------------------------------

//Shows ways of passing various arguments to a method public static void Main
                int x = 7;
                int y = 20;
                int z = -3;
                int result = 0;

                result = MultiplyBy4(x);
                Console.WriteLine("Passsing a variable, x : {0}", result);

                result = MultiplyBy4(y + 2);
                Console.WriteLine("Passing an expression, Y + 2: {0}", result);

                result = 5 + MultiplyBy4(z);
                Console.WriteLine("Using MultiplyBy4 in an expression: {0}", result);
                Console.ReadLine();
            }
 }

ほとんどの場合、これはコーディングの誤りであるため、これはコンパイラが検出して警告するものです。

また、return ステートメントを移動して関数の最後で関数を終了すると、コードによって StackOverflow が発生します (SO :P の皮肉なことに)。呼び出すことで、終わりのない再帰を引き起こしていますMultiplyBy4(z);

これにより、プロセッサが 100% になり、関数呼び出しを保持するメモリの部分が完全にいっぱいになります。

于 2014-01-13T14:11:46.443 に答える
0

cubitouchが言ったように、returnステートメントは関数の実行を停止します。

if 句に複数の return ステートメントを含めることができます。ただし、少なくとも 1 つの return ステートメントが、どこからでもアクセスできる関数に含まれている必要があります (たとえば、条件がまったく満たされていない場合)。

通常、return ステートメントは関数の最後の命令です。

于 2014-01-13T14:12:41.910 に答える