您能否解释我应该如何避免此警告: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”? 也许这是一个迟钝的问题,但我被困在这里。 感谢。
答案 0 :(得分: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();
}
}
答案 1 :(得分:4)
return语句退出此处的函数。
因此x,y,z和result以及Console.Write
的声明永远不会运行......
答案 2 :(得分:0)
答案 3 :(得分: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%并填充完全保存函数调用的内存部分。
答案 4 :(得分:0)
正如cubitouch所说,return语句在函数中停止执行。
如果在if子句中包含多个return语句,则可以使用多个return语句。但至少有一个返回语句必须在可以从任何地方到达的函数中(例如,没有条件满足)
一般来说,return语句是函数中的最后一条指令。