Bool错误:“并非所有代码路径都返回值”

时间:2014-02-11 23:34:44

标签: c# compiler-errors boolean boolean-operations

我创建了一个快速测试方法来试验检查文件及其内容,但由于某种原因我收到错误“并非所有代码路径都返回值”。据我所知,除了主要的“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; }
    }
}

2 个答案:

答案 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,那么你的代码不会返回任何内容。那是错误。用铅笔和纸张浏览代码,看看它是如何执行的。