web-dev-qa-db-ja.com

2つのアクションを持つ単一行のifステートメント

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

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

(if) ? then : else

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

しかし、私は「else」のみを必要とせず、「else if」が必要です

そのような複数行で:

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

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

30
Nagelfar

あなたは本当にDictionary<int, string>またはおそらくswitchステートメント...

あなたはcan条件付き演算子でそれを行います:

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

couldを1行に入れますが、そうしないことを強くお勧めします。

私は通常onlyさまざまな条件でこれを行います-いくつかの異なる値だけでなく、マップでより適切に処理されます。

74
Jon Skeet
userType = (user.Type == 0) ? "Admin" : (user.type == 1) ? "User" : "Admin";

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

18
user529758

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

あなたが多すぎる場合if/elseコンストラクト、Dictionaries(キーを検索する)またはCollection(条件付きLINQクエリを実行する)など、さまざまなデータ構造の使用を検討できます。

6
Tigran