Merci d'avoir pris le temps d'essayer de m'aider.HasFlag() renvoie toujours la valeur true dans Enum foreach statement
J'ai rencontré un problème plutôt étrange. J'essaie de parcourir toutes les valeurs Enum pour vérifier si mon objet contient le drapeau Enum. Mais pour une raison quelconque, que je ne comprends pas tout à fait, dans le foreach il dit qu'il a toujours le drapeau. Mais dans les instructions séparées, cela fonctionne exactement comme je le voulais. Mais je ne veux pas répéter le code 6 fois, donc j'aimerais que la déclaration foreach fonctionne.
Est-ce que quelqu'un sait ce qui se passe? Peut-être quelques informations de base pourquoi cela se passe-t-il?
Désolé pour mon anglais, ce n'est pas ma langue maternelle.
Merci d'avance!
Le code est différent de l'original, mais il est essentiellement le même.
Code ci-dessous.
[Flags]
public enum SampleEnum
{
Enum1 = 0,
Enum2 = 1,
Enum3 = 2,
Enum4 = 4,
Enum5 = 8,
Enum6 = 16,
};
SampleEnum sample = SampleEnum.Enum1 | SampleEnum.Enum2;
// This doesn't work
foreach (SampleEnum enum in Enum.GetValues(typeof(SampleEnum)))
{
// This is statement says it allways has the flags. Even tho it doesn't have the flag.
if(sample.HasFlag(enum))
{
// This is always true.
}
}
// This works
if (sample.HasFlag(SampleEnum.Enum2))
{
// true
}
// This works
if (sample.HasFlag(SampleEnum.Enum3))
{
// false
}
// This works
if (sample.HasFlag(SampleEnum.Enum4))
{
// false
}
}
Si vous mettez' Enum.GetValues (typeof (MainSettings.ConnectedPrinters)). Cast() 'fonctionne-t-il alors? Le type de retour 'GetValues' est non générique' Array'. –
Quelle est la valeur de printGroup, à la boucle où '.HasFlag' est toujours vrai? – Edin