如果不能继续直到结束

时间:2013-11-19 05:03:24

标签: c# if-statement

我正在处理使用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);
            }

当我启动我的应用程序时,如果这三个文件都不存在 它只创建第一个文件!!

如果第一个文件只存在,则只创建第二个文件!!

如果两者都存在则会创建第三个..

知道这段代码有什么问题吗?!!

谢谢......

3 个答案:

答案 0 :(得分:4)

解决方案:使用if代替else-if

原因:如果您使用if-else的组合,它只执行first true方案并进一步跳过。
但如果您对所有条件使用if,它将执行all true个方案。

<强>代码:

                if (!File.Exists("clients.xml"))
                {
                    List<string> lines = new List<string>();
                    lines.Add("<clients>");
                    lines.Add("</clients>");
                    File.WriteAllLines("clients.xml", lines);
                }
                 if (!File.Exists("cases.xml"))
                {
                    List<string> lines = new List<string>();
                    lines.Add("<names>");
                    lines.Add("</names>");
                    File.WriteAllLines("cases.xml", lines);
                }
                if (!File.Exists("files.xml"))
                {
                    List<string> lines = new List<string>();
                    lines.Add("<num>");
                    lines.Add("</num>");
                    File.WriteAllLines("files.xml", lines);
                }
                else
                {
                    return;
                }

答案 1 :(得分:3)

else删除else if

这意味着将评估所有if语句。

你设置它的方式,它有瀑布效果。如果第一个语句为false,则评估第二个语句。如果这是假的,则评估第三个等。

答案 2 :(得分:2)

不要按照您的方式行事:

经验法则:Do not repeat the code

写一个像这样的通用函数:

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