只需检查多个语句C#

时间:2017-10-19 11:21:24

标签: c# arrays if-statement

目前正在开发一款小型控制台游戏,并且想知道是否有人有一种简单的方法可以缩短这样的内容:

setsid

制作一个列表或其他内容,并检查if (map[playerX - 1, playerY] == "R1" || map[playerX - 1, playerY] == "R2" || map[playerX - 1, playerY] == "R3" || map[playerX - 1, playerY] == "Z1" || map[playerX - 1, playerY] == "Z2" || map[playerX - 1, playerY] == "Z3" || map[playerX - 1, playerY] == "S1 " || map[playerX - 1, playerY] == "S2" || map[playerX - 1, playerY] == "S3") 是否等于其中的任何对象。

提前感谢您的帮助。 Lukas Leder

2 个答案:

答案 0 :(得分:7)

您感兴趣的特定匹配值(R1Z1等)应填充到HashSet

HashSet hashSet = new HashSet<string>
{
    "R1",
    "R2",
    "R3",
    "Z1",
    "Z2",
    "Z3",
    "S1 ", // I am unclear whether you want this space or not
    "S2",
    "S3"
};

然后使用:

if (hashSet.Contains(map[playerX - 1, playerY])

HashSet具有一致的快速Contains功能(如上所示),适合您的目的。正如@FilipCordas在下面提到的那样,您应该考虑将此HashSet声明为static readonly字段,以确保您只需要初始化一次。

答案 1 :(得分:2)

Jep,正如@mjwills指出的那样。

事实上,所有IListIDictionary个后代和类似的都有Contains方法。因此,您可以选择哪种类型的列表或集合最符合您的需求。

例如,列表是实例List<string> a = new List<string>(); a.Add("b");