检测到无法访问的代码C#(绝对初学者)

检测到无法访问的代码C#(绝对初学者),c#,unreachable-code,C#,Unreachable Code,您能解释一下我应该如何避免在VisualStudio2010 Express中出现这样的警告:“检测到无法访问的代码”吗?我在从手册上学习C#。 这是一个创建简单方法的练习。我输入的例子与书中所写的一模一样。谢谢 public class Multiply { //Multiplies argument by 4 public static int MultiplyBy4(int aNumber) { return 4 * aNumber;

您能解释一下我应该如何避免在VisualStudio2010 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();
    }
 }
我不理解手册的注释: 在使用参数和返回值创建方法后,“显示将各种参数传递给方法publicstaticvoidmain的方法”。 如何使方法MultiplyBy4将x、y、z识别为“一个数”? 也许这是个愚蠢的问题,但我被困在这里了。
谢谢。

返回语句正在退出此处的函数


因此,x、y、z和result的声明以及控制台.Write将永远不会运行…

返回语句之后的任何语句都是不可访问的。它永远不会执行,编译器会通知您

如果由于无法访问语句而无法执行该语句,则为编译时警告


这是因为当您在函数中的某些代码之前退出函数时,代码无法运行函数的每一行:

   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();
            }
 }
公共类乘法
{
//将参数乘以4
公共静态整数乘4(整数个数)
{

return 4*aNumber;//正如cubitouch所说,return语句停止函数中的执行

如果if子句中有多个返回语句,则可以有多个返回语句。但函数中必须至少有一个返回语句可以从任何地方访问(例如,不满足任何条件)


一般来说,返回语句是函数中的最后一条指令。

注释行混乱,包含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();
            }
 }

看起来他们希望你对不同的部分进行注释,一次一个,然后依次尝试(不是一次全部).return
4*aNumber
语句结束了该方法,因此下面的代码永远不会运行。从注释开始。我认为您需要另一本手册。这是一个可怕的示例。我尝试注释,它没有任何作用。我同意这很可怕。在这里之前它一直正常。现在完全是黑暗的。我通过写作解决了警告下面的例子如Carsten Heine所示。它现在看起来并没有那么糟糕。这不是编译时错误,而是编译时警告。虽然我个人总是将警告视为错误,但并不是每个人都会这样。这是编译时警告,不是错误。无论如何都不会执行任何操作。这是我到目前为止学到的。好吧,我该如何修复它并使其生效它有效吗?如果我删除了返回,我就没有办法了。知道警告的原因并不能给我解决办法,因为我的知识在这一点上非常有限。返回背后的所有内容都应该在主功能中(或者至少在程序的主功能中)如果我能很好地理解你的练习的话。我把所有的东西都放在主要部分,它都变红了。我想这需要6个月的时间才能弄清楚。我正在前进。我将采用一种无方法的编程风格。你是对的。我在花括号方面遇到了一些问题(我在这一章中迷失了方向)。我开始了一个新项目,它成功了。谢谢。很好的回答,但这使问题偏离了主题。我按你说的写了下来,但现在我有4个红色错误。我想打自己的头。你是对的。这就是方法的工作原理,我现在明白了。我打开了一个新项目,从头开始写所有东西。似乎我也有问题{{}太多或太少。控制台一次显示所有结果。谢谢。