目前正在开发一款小型控制台游戏,并且想知道是否有人有一种简单的方法可以缩短这样的内容:
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
答案 0 :(得分:7)
您感兴趣的特定匹配值(R1
,Z1
等)应填充到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指出的那样。
事实上,所有IList
或IDictionary
个后代和类似的都有Contains
方法。因此,您可以选择哪种类型的列表或集合最符合您的需求。
例如,列表是实例List<string> a = new List<string>(); a.Add("b");