Я уверен, что должен быть намного лучший способ сделать это. Я пытаюсь выполнить операцию подсчета для перечисления Flags. Раньше я перебирал все возможные значения и считал успешные операции AND.
, например
[Flags]
public enum Skills
{
None = 0,
Skill1 = 1,
Skill2 = 2,
Skill3 = 4,
Skill4 = 8,
Skill5 = 16,
Skill6 = 32,
Skill7 = 64,
Skill8 = 128
}
public static int Count(Skills skillsToCount)
{
Skills skill;
for (int i = 0; i < SkillSet.AllSkills.Count; i++)
{
skill = SkillSet.AllSkills[i];
if ((skillsToCount & skill) == skill && skill != Skills.None)
count++;
}
return count;
}
Я уверен, что должен быть лучший способ сделать это, но, должно быть, страдает от психического блока. Кто-нибудь может посоветовать более удачное решение?