If Syntax verkürzen?



  • Hallo,
    ich suche nach eine Möglichkeit den If Syntax zu verkürzen.
    Hier ein Beispiel, statt:

    if ((Drive.DriveType == DriveType.Fixed) ||  (Drive.DriveType == DriveType.Removable ))
    

    sowas hier:

    if (Drive.DriveType == ( DriveType.Fixed | DriveType.Removable ))
    

    Leider funktioniert mein obriges Beispiel nicht. Es lässt sich zwar Kompilieren aber bei der Ausführung geht er nicht in die If Bedingung rein wenn der DriveType = Removable ist.

    Ich denke so, oder so ähnlich müsste der Syntax lauten.
    Vielleicht könnt ihr mir ja auf die Sprünge helfen.
    Beste Grüße

    EDIT: Natürlich meinte ich ||



  • Geht nicht (falls du im oberen Code || statt && meintest).



  • Nein, das geht so nicht. Schreib es einfach aus. Btw, deine erste Code-Zeile macht so keinen Sinn. Du meintest ||, oder? Und in der zweiten Zeile nutzt du bitweises OR. Denk mal drüber nach, wie der Ausdruck ausgewertet wird.



  • _matze schrieb:

    Nein, das geht so nicht. Schreib es einfach aus. Btw, deine erste Code-Zeile macht so keinen Sinn. Du meintest ||, oder? Und in der zweiten Zeile nutzt du bitweises OR. Denk mal drüber nach, wie der Ausdruck ausgewertet wird.

    ein einzelnes | ist eine bitweises OR ?
    Gut zu wissen, dann kann es ja auch schlecht funktionieren.

    Aber gibt es sonst keine andere Möglichkeit das kürzer zu schreiben?



  • teddds schrieb:

    Aber gibt es sonst keine andere Möglichkeit das kürzer zu schreiben?

    Nö.
    Und gewöhne dich schonmal daran.
    Es gibt für 1000 Dinge keine Möglichkeit sie "schön kurz" zu schreiben.


  • Administrator

    public bool IsFixedOrRemovable(DriveType driveType)
    {
      return driveType == DriveType.Fixed ||
             driveType == DriveType.Removable;
    }
    
    // ...
    
    if(IsFixedOrRemovable(Drive.DriveType))
    {
      // ...
    }
    
    // ...
    

    Nur so als Idee 😉

    Grüssli



  • Draveres Code kam mir direkt in den Sinn als ich das erste Posting las 😃


Anmelden zum Antworten