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