C# 否则,如果不继续,直到结束

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>");

我正在开发处理XML文件的win form应用程序

我将此代码添加到表单加载事件中

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);
}