ich eine Erweiterungsmethode als solche erstellt haben ..Überprüfen Sie, ob ausschließlich nur diese in Aufzählung gesetzt Flags
public static bool AllFlagsSet<T>(this T input, params T[] values) where T : struct, IConvertible
{
bool allSet = true;
int enumVal = input.ToInt32(null);
foreach (T itm in values)
{
int val = itm.ToInt32(null);
if (!((enumVal & val) == val))
{
allSet = false;
break;
}
}
return allSet;
}
die für die Zwecke funktioniert gut ich brauchte, aber ich habe jetzt eine Anforderung, ein Verfahren zu schaffen, mit der gleiche Signatur, die prüft, ob nur diese Werte gesetzt wurden.
Grundsätzlich so etwas.
public static bool OnlyTheseFlagsSet<T>(this T input, params T[] values) where T : struct, IConvertible
{
}
Die einzige Möglichkeit, die ich denken kann, dies zu tun ist, indem sie alle verfügbaren Enumerationswerten Prüfung erhalten die eingestellt werden, und bestätigt, dass nur die beiden zur Verfügung gestellt wurden.
Gibt es eine andere Möglichkeit, dieses Problem mit einer bitweisen Operation zu lösen?
Ist das eine Hausaufgaben ?? Und warum ist T Constraint zu einer Struktur und nicht zu einer Enum ?? – LightStriker
lol, nun, das ist peinlich. Nein, ich habe noch kein festes Verständnis für bitweise Operationen ... Das ist eine echte Anforderung –
Versuchen Sie, es auf Enum zu beschränken und sehen Sie, was passiert. ;-p –