36

我想做一个多于 1 个动作的单行 if 语句。

默认是这样的:

(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"

单行有可能吗?

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结构,您可能会考虑使用不同的数据结构,例如Dictionaries(查找键)或Collection(对其运行条件LINQ查询)

于 2012-09-18T20:02:14.223 回答