使用多种选项压缩IF语句?

时间:2013-08-30 14:55:04

标签: c# if-statement

我正在处理一个项目,如果在文件中标识了一个值

,它会运行一个进程
if (read_txt.Contains("one") == true)
   (do.something)
else if ((read_txt.Contains("two") == true)
   (do.something.else)
else
   (do.last.thing)

(do.something)和(do.something.else)包含很多东西,比如进程,if语句等。

例如,(do.something)包含;

if (read_txt.Contains("one") == true)
   write_log
   process
   read_file
   if file.contains
        write_log
   else
        write_log
        process
   process
   if file.contains
        write_log
   else
        write_log

我遇到的问题是,如果'read_txt'中的文件同时包含“one”和“two”,我希望能够运行两个元素,(do.something)和(do.something.else),没有再复制代码,因为有很多。

最好的方法是什么?

我是C#的初学者,但是这个项目正在帮我快速学习!

3 个答案:

答案 0 :(得分:2)

  

我遇到的问题是,如果'read_txt'中的文件同时包含“one”和“two”,我希望能够运行两个元素,(do.something)和(do.something.else),没有再复制代码,因为有很多。

这很简单,只是不要将其设为else if,只需要两个if语句。

bool foundNone = true;

if(read_txt.Contains("one"))
{
    DoFirstThing();
    foundNone = false;
}

if(read_txt.Contains("two"))
{
    DoSecondThing();
    foundNone = false;
}

if(foundNone)
{
   DoThirdThing();
}

这意味着它将为找到的每个值运行代码,并且在找到它时不会停止,但是如果其他选项的 none 被命中,它仍然只会执行最后一项操作。

答案 1 :(得分:1)

bool not12 = true;
if (read_txt.Contains("one")) { (do.something); not12 = false;}
if (read_txt.Contains("two")) {(do.something.else); not12 = false;}   
if(not12) (do.last.thing);

答案 2 :(得分:0)

从(do.something)中编写一个函数和/或让你的第一个if语句检查两者同时为真,例如:

if(read_txt.Contains("one") && read_txt.Contains("two"))