Ich versuche, eine Reihe von bedingten Anweisungen zu verwenden, die eine mit [Flags] zugewiesene Aufzählung einrichten. Der Compiler beklagt sich jedoch, dass 'm' nicht zugewiesen ist. Wie kann ich Folgendes umschreiben, um meine beabsichtigte Funktionalität zu erreichen?Flags enum in .NET
Media m;
if (filterOptions.ShowAudioFiles)
m = m | Media.Audio;
if (filterOptions.ShowDocumentFiles)
m = m | Media.Document;
if (filterOptions.ShowImageFiles)
m = m | Media.Image;
if (filterOptions.ShowVideoFiles)
m = m | Media.Video;
Was passiert, wenn alle Bedingungen fehlschlagen? Was ist, wenn 0 z.B. Medien.Audio? Sie benötigen einen * gültigen * Anfangswert. – EricSchaefer
Das ist ein schlechter Ratschlag. Es ist immer besser, explizite Werte zu verwenden, als sich auf Integer-Umwandlungen zu verlassen. – Randolpho
Nicht wirklich. Die Enum funktioniert auch dann einwandfrei, wenn kein "gültiges" Flag gesetzt ist. Es wird immer noch einen Wert geben. Alle Enums werden standardmäßig von "Int32" übernommen. Ja, später könnten andere Probleme auftreten, wenn Sie keine Standardwerte verwenden. Aber dafür gibt es Ausnahmen. –