我创建了一个快速测试方法来试验检查文件及其内容,但由于某种原因我收到错误“并非所有代码路径都返回值”。据我所知,除了主要的“if”声明外,他们都这样做。但是如果我在该语句中设置一个返回值,它将覆盖其他返回值。
任何人都可以告诉我为什么会发生这种情况/解释导致错误的原因吗?
public static bool FileCheck()
{
string file = @"C:\Temp\test.txt";
Console.WriteLine(File.Exists(curFile) ? "File exists." : "File does not exist.");
if (File.Exists(file) == true)
{
StreamReader rdr = new StreamReader(file);
string myString = rdr.ReadToEnd();
if (myString == null)
{
Console.WriteLine("File empty");
return false;
}
else { Console.WriteLine(myString); return true; }
}
}
答案 0 :(得分:2)
编译器不知道if (File.Exists(file) == true)
为false
时会发生什么,因为没有更多行返回布尔值。因此,该错误会提醒您。
在编译器return boolean;
之后添加if
知道该做什么
if (File.Exists(file) == true)
{
StreamReader rdr = new StreamReader(file);
string myString = rdr.ReadToEnd();
if (myString == null)
{
Console.WriteLine("File empty");
return false;
}
else { Console.WriteLine(myString); return true; }
}
return false; ///<=============
它可以与逻辑文件访问一起使用
答案 1 :(得分:0)
如果
,没有别的可以继续这样做if (File.Exists(file) == true)
如果为false,则不返回任何内容。所以你需要在最后添加一个返回false。
if (File.Exists(file) == true)
{
...
}
return false;
当你的方法执行时,它应该返回你定义的类型。在您调用该方法的情况下,它应该返回一个布尔值。当代码执行路径进入if语句时,它很好,因为它返回一个布尔值。如果代码没有进入if,那么你的代码不会返回任何内容。那是错误。用铅笔和纸张浏览代码,看看它是如何执行的。