1
if (task1 != null)
    //Do something with task1
else
{
     if (task2 != null)
         //Do something with task2
     else
     {
         if (task3 != null)
             //Do something with task3
         else
         {
             if (task4 != null)
                 //Do something with task4
         }
     }
}

上記のコードに代わるものはありますか? null でないタスクに応じて、一種の「フラット」なスイッチ ケースを探しています。

助けていただける方には、事前にたくさんの感謝を申し上げます。

4

4 に答える 4

13

みんな同じタイプ?そして、各ブランチで同じことをしたいですか? その場合は、null 合体を使用できます。

var chosenTask = task1 ?? task2 ?? task3 ?? task4;
// do something with chosenTask
于 2012-03-15T10:15:05.693 に答える
4

メソッドが他のことを行うかどうかによって異なります。そうでない場合は、次を使用できます。

if (task1 != null)
{
    // Do something with task1
    return;
}
if (task2 != null)
{
    // Do something with task2
    return;
}
if (task3 != null)
{
    // Do something with task3
    return;
}
if (task4 != null)
{
    // Do something with task4
    return;
}

(Marc が行っていたのと同じ点を追加しようとしていました。最初に null 以外のタスクで同じことを行う場合、 null 合体演算子は確かにあなたの友達です。)

于 2012-03-15T10:15:21.780 に答える
3

すべてのタスクで Run() メソッドを使用して ITask を実装し、実行するタスクを ICollection に追加して、反復処理できるようにします。

foreach (var task in TaskCollection) {
   task.Run();
}
于 2012-03-15T10:17:12.713 に答える
1

左側にいくつかの変数が必要であるという条件で、条件演算子を使用できます

var v = task1 != null ? do something : task2 == null ? do something : task3 != null ? do something : task4 != null ? do something : null;
于 2012-03-15T10:20:45.537 に答える