Ich habe eine Flagge enum unten.Wie vergleicht man Flags in C#?
[Flags]
public enum FlagTest
{
None = 0x0,
Flag1 = 0x1,
Flag2 = 0x2,
Flag3 = 0x4
}
Ich kann nicht die if-Anweisung als wahr bewerten.
FlagTest testItem = FlagTest.Flag1 | FlagTest.Flag2;
if (testItem == FlagTest.Flag1)
{
// Do something,
// however This is never true.
}
Wie kann ich das wahr machen?
mich korrigieren, wenn ich falsch bin, 0 angemessen zu sein als Flag-Wert verwendet? – Roylee
@Roylee: 0 ist akzeptabel, und es ist eine gute Idee, eine "None" oder "Undefined" -Flag zu haben, um zu testen, keine Flags gesetzt. Es ist keineswegs erforderlich, aber es ist eine gute Übung. Das Wichtigste, woran man sich erinnert, wird von Leonid in seiner Antwort hervorgehoben. – Andy
@Roylee Es wird tatsächlich von Microsoft empfohlen, ein Flag "None" mit einem Wert von Null bereitzustellen. Siehe http://msdn.microsoft.com/en-us/library/vstudio/ms229058(v=vs.100).aspx – ThatMatthew