36

複数のアクションを含むifステートメントを1行実行したいと思います。

デフォルトは次のとおりです。

(if) ? then : else

userType = (user.Type == 0) ? "Admin" : "User";

しかし、私は「else」だけを必要とせず、「elseif」が必要です

複数行のように:

if (user.Type == 0)
    userType = "Admin" 
else if (user.Type == 1)
    userType = "User"
else if (user.Type == 2)
    userType = "Employee"

一行でそれの可能性はありますか?

4

3 に答える 3

89

Dictionary<int, string>あなたが本当にまたはおそらくswitchステートメントが欲しいように聞こえます...

ただし、条件演算子を使用してそれを行うことができます。

userType = user.Type == 0 ? "Admin"
         : user.Type == 1 ? "User"
         : user.Type == 2 ? "Employee"
         : "The default you didn't specify";

それを一行にまとめることはできますが、そうしないことを強くお勧めします。

私は通常、さまざまな条件に対してのみこれを行います-マップでより適切に処理されるいくつかの異なる可能な値だけではありません。

于 2012-09-18T20:01:57.240 に答える
20
userType = (user.Type == 0) ? "Admin" : (user.type == 1) ? "User" : "Admin";

トリックを行う必要があります。

于 2012-09-18T20:02:20.677 に答える
7

それは一行で書くことができますが、誰かが読むことができるものではありません。あなたがすでにそれを書いたようにそれを保ってください、それはそれ自体ですでに美しいです。

構成が多すぎる場合は、 (キーを検索するため)や(キーに対して条件付きクエリを実行するため)などif/else、さまざまなデータ構造の使用を検討できます。DictionariesCollectionLINQ

于 2012-09-18T20:02:14.223 に答える