【发布时间】:2019-07-13 04:03:39
【问题描述】:
我希望找到一种紧凑的方法来使用 c# 内置的枚举功能完成以下操作 (在 Collections 库中)。
1. 枚举一个游戏对象列表,在每次迭代中获取当前项目的名称
2. 将字符串名称与我为方便创建的一组枚举进行比较(以避免字符串中的拼写错误)
3.如果名称与至少一个枚举匹配,则返回 true 并执行内容
我在编写代码时经常看到IList和IEnumerable之类的关键字,并希望更好地理解它们。
伪代码
foreach(GameObject item in myGameObjectList)
{
if(item.name.ToLower() == nameof(IEnumerable<MyEnums>(out match /*does the string match?*/))
{
//this code will execute if the item in the list has a name matching atleast one of the enums
}
}
【问题讨论】:
-
既然可以比较枚举值本身,为什么还要比较字符串呢?只需将其存储在您的游戏对象上。数字比较比字符串比较快。
-
原因是,这是为编辑器准备的,并不打算进行难以置信的优化,它旨在方便在构建之前进行配置,此代码在构建时从每个处理中剥离.将枚举添加到该事物正在比较的每个游戏对象可能很麻烦,与此相比,自动执行此操作的方式只会浪费精力。
-
查看 Linq,它将为您提供一种方法来完成您的要求