Estoy seguro de que debe haber una forma mucho mejor de hacerlo. Estoy intentando hacer una operación de conteo en una enumeración de Flags. Antes estaba iterando sobre todos los valores posibles y contando las operaciones AND exitosas.Contando el número de banderas establecidas en una enumeración
p. Ej.
[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;
}
Estoy seguro de que debe haber una forma mejor de hacerlo, pero debe sufrir un bloqueo mental. ¿Alguien puede aconsejar una mejor solución?
¿Sería más claro si usted está tratando de averiguar el número total de banderas en Habilidades sí Enum? o la cantidad de habilidades enum valor aplicado en "habilidades"? – Sung
Definitivamente leí mal esto. Parece que está intentando contar el número de bits que están encendidos, no el número de elementos en la enumeración. Eliminé mi publicación. –
Lo siento por no estar claro. De hecho, estoy tratando de contar el número de habilidades activas pasadas al método Count. Editará la pregunta ligeramente para que quede más clara. – Ian