C# 如何告诉编译器变量将存在

C# 如何告诉编译器变量将存在,c#,visual-studio,C#,Visual Studio,如何让VisualStudio相信变量将在需要时存在。这是我的密码: string line; bool fileExists = false; System.IO.StreamReader fileIn; System.IO.StreamWriter fileOut; fileIn = new System.IO.StreamReader(inputFile); while ((line

如何让VisualStudio相信变量将在需要时存在。这是我的密码:

            string line;
        bool fileExists = false;
        System.IO.StreamReader fileIn;
        System.IO.StreamWriter fileOut;

        fileIn = new System.IO.StreamReader(inputFile);

        while ((line = fileIn.ReadLine()) != null)
        {
            if (line.Length > 0 && line.Substring(0, 1) == "O")
            {
                _parent.StatusOutput(line);
                if (fileExists)
                {
                    // close the existing file ...
                    fileOut.WriteLine();
                    fileOut.WriteLine();
                    fileOut.WriteLine("%");
                    fileOut.Close();
                }
                // create a new file ...
                fileOut = new System.IO.StreamWriter(outputFolder + @"\" + line);
                fileExists = true;
                fileOut.WriteLine();
                fileOut.WriteLine("%");
                fileOut.WriteLine(line);
            }
            else if (line.Length == 0)
            {
                _parent.StatusOutput("Blank line.");
                if (fileExists) fileOut.WriteLine();
            }
            else if (line.Length > 0 && line == "%")
            {
                _parent.StatusOutput("BO/EOF found.");
                // do nothing ...
            }
            else
            {
                // everything else goes to the new file ...
                if (fileExists) fileOut.WriteLine();
            }
        }    // while ...

        // close the last file ...
        fileOut.WriteLine();
        fileOut.WriteLine();
        fileOut.WriteLine("%");
        fileOut.Close();
        fileIn.Close();
错误是当我尝试写入fileOut时。我知道文件输出写入将及时存在,但编译器没有

如何让编译器忽略这一点

谢谢,
Bernie

您可以在声明时将
null
分配给
fileOut
,然后检查它是否为null:

    string line;
    System.IO.StreamReader fileIn;
    System.IO.StreamWriter fileOut = null;

    fileIn = new System.IO.StreamReader(inputFile);

    while ((line = fileIn.ReadLine()) != null)
    {
        if (line.Length > 0 && line.Substring(0, 1) == "O")
        {
            _parent.StatusOutput(line);
            if (fileOut != null)
            {
                // close the existing file ...
                fileOut.WriteLine();
                fileOut.WriteLine();
                fileOut.WriteLine("%");
                fileOut.Close();
            }

            // create a new file ...
            fileOut = new System.IO.StreamWriter(outputFolder + @"\" + line);
            fileOut.WriteLine();
            fileOut.WriteLine("%");
            fileOut.WriteLine(line);

您必须在使用它之前进行初始化,就像在fileIn之后进行move fileOut初始化一样

fileIn = new System.IO.StreamReader(inputFile);

fileOut = new System.IO.StreamWriter(outputFolder + @"\" + line);

在需要时存在什么?在使用它之前需要显式声明。为了避免使用未分配的本地:
System.IO.StreamReader fileIn=null
(或缩小其范围)@BernieHunt:什么错误?至少在一种情况下,它不会被设置-如果
fileIn.ReadLine()
在第一次调用时返回
null
。我建议在<>代码> 之后,在其他地方也考虑保护访问,并考虑使用<代码>文件> <代码> S>代码> null <代码> >代码>不要NUL/<代码>作为标志,而不是使用单独的<代码> BoOL < /C> > .@ TeJavaSHIVAV,这是OP的代码。我只修改了代码的一部分,这与问题有关。这个社区不是关于编码模式的!出于好奇,您将如何重构此代码?是否使用
fileOut.Writeline(“\n\n%”)
fileOut.WriteLine(Environment.Newline+Environment.Newline+“%”)?@Romano Zumbé你是对的,很快就误解了代码。我关注的是System.IO.StreamWriter fileOut=null;不是NewLine等。正在回滚我的评论、道歉!我想这是因为你的代码错了<代码>文件输出
是用一个不存在的路径创建的,因为
在该点未初始化。此外,这样做是没有意义的。在这里,赋值为null就足够了。