C# 如何告诉编译器变量将存在
如何让VisualStudio相信变量将在需要时存在。这是我的密码: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
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就足够了。