C# 否则,如果不继续,直到结束
我正在开发处理XML文件的win form应用程序 我将此代码添加到表单加载事件中C# 否则,如果不继续,直到结束,c#,if-statement,C#,If Statement,我正在开发处理XML文件的win form应用程序 我将此代码添加到表单加载事件中 if (!File.Exists("clients.xml")) { List<string> lines = new List<string>(); lines.Add("<clients>"); lines.Add("</clients>");
if (!File.Exists("clients.xml"))
{
List<string> lines = new List<string>();
lines.Add("<clients>");
lines.Add("</clients>");
File.WriteAllLines("clients.xml", lines);
}
else if (!File.Exists("cases.xml"))
{
List<string> lines = new List<string>();
lines.Add("<names>");
lines.Add("</names>");
File.WriteAllLines("cases.xml", lines);
}
else if (!File.Exists("files.xml"))
{
List<string> lines = new List<string>();
lines.Add("<num>");
lines.Add("</num>");
File.WriteAllLines("files.xml", lines);
}
当我启动应用程序时,如果这三个文件都不存在
它只创建第一个文件
如果第一个文件只存在,它只创建第二个文件
如果两者都存在,则创建第三个
你知道这个代码有什么问题吗
谢谢…解决方案:使用if而不是else if
原因:如果您使用if-else的组合,它只执行第一个真实场景,并跳过进一步的场景。
但如果对所有条件使用if,它将执行所有真实场景
代码:
从else if中删除else
这意味着将对所有if语句进行求值
按照您设置它的方式,它具有瀑布效应。如果第一条语句为false,则对第二条语句求值。如果这是错误的,请评估第三个等。不要按照您正在执行的方式执行:
经验法则:不要重复代码
编写一个通用函数,如下所示:
public void DoStuff(string fileName, List<string> linesToBeWritten)
{
var output = new List<string>();
if (!File.Exists(fileName))
return;
output.Add("<" + fileName + ">");
output.AddRange(linesToBeWritten);
output.Add("</" + fileName + ">");
File.WriteAllLines(fileName, output);
}
如果这意味着。。。除掉else,你就可以开始了。Vista医生,非常简单,删除else if,如果你没有准确解释isi最初没有它时尝试的预期行为,就使用它。。然后我想这可能是需要的,这两种情况的结果是一样的,有没有其他的!!如果第一个文件不存在,则表示这是应用程序的首次启动。。因为每个文件都依赖于上一个。如果修复了,请使用if only而不是else。非常感谢您的帮助。。。但是我不知道我认为else if执行的是之前的语句,else if只执行多个条件中的一个真条件。
public void DoStuff(string fileName, List<string> linesToBeWritten)
{
var output = new List<string>();
if (!File.Exists(fileName))
return;
output.Add("<" + fileName + ">");
output.AddRange(linesToBeWritten);
output.Add("</" + fileName + ">");
File.WriteAllLines(fileName, output);
}