Can't get a return value from a foreach loop inside a method
方法:meth1 meth2 ect ....都返回一个值,但此刻我收到错误
“错误1'Proj5.Program.meth1(int)':并非所有代码路径都为每个方法返回一个值。
我的逻辑推测是它没有看到循环中的值? ......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Proj5
{
class Program
{
static void Main()
{
for (int i = 1; i < 101; i++)
{
if (i == 3 || 0 == (i % 3) || 0 == (i % 5) || i == 5)
{
Console.Write(meth1(i));
Console.Write(meth2(i));
Console.Write(meth3(i));
Console.Write(meth4(i));
}
else
{
Console.Write(TheInt(i));
}
}
Console.ReadLine();
}
static string meth1(int i)
{
string f = "fuzz";
if (i == 3)
{
return f;
}
}
static string meth2(int i)
{
string f = "fuzz";
if (0 == (i % 3))
{
return f;
}
}
static string meth3(int i)
{
string b = "buzz";
if (i == 5)
{
return b;
}
}
static string meth4(int i)
{
string b = "buzz";
if (0 == (i % 5))
{
return b;
}
}
static int TheInt(int i)
{
return i;
}
}
}
答案 0 :(得分:3)
你说你的方法应该返回一个字符串,但是如果我&lt;&gt; 3,你没有说应该返回什么。 顺便提一下,方法2和3有相同的问题(也是4)。 我不会谈论方法TheInt,这是......好笑;)
校正
static string meth1(int i)
{
string f = "fuzz";
if (i == 3)
{
return f;
}
return null;//add a "default" return, null or string.Empty
}
或更短
static string meth1(int i) {
return (i == 3) ? "fuzz" : null/*or string.Empty*/;
}
答案 1 :(得分:0)
只有当if被评估为true时,才会返回您的函数。在if之外添加return语句,或者添加else语句,你的代码将编译并运行。
static string meth2(int i)
{
string f = "fuzz";
if (0 == (i % 3))
{
return f;
}
else
return "";
}
答案 2 :(得分:0)
当你声明一个方法返回一个值时(对于meth1等),你应该遵守这个声明。
如果不满足内部条件,您的方法不会返回任何内容。 编译器会注意到这一点并向您抱怨
您应确保每个可能的执行路径都将调用方法中的内容返回给调用者。
例如
static string meth3(int i)
{
string b = "buzz";
if (i == 5)
{
return b;
}
// What if the code reaches this point?
// What do you return to the caller?
return string.Empty; // or whatever you decide as correct default for this method
}