If-Anweisung verkürzen

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Hano.

    If-Anweisung verkürzen

    Hallo,

    ich habe eine If-Anweisung in folgender Form:

    If A = "xy" or A = yz" or B= "xy" or B= "yz" then irgenwas.

    Das funktioniert natrürlich, aber ich habe irgendwie das Gefühl, dass man das auch eleganter lösen kann.
    Hat jemand einen Vorschlag für mich?

    Gruß

    Hano
    Bei diesem sicherlich nicht so 1:1 im Code auftretenden Beispiel kann man m.E. nicht sonderlich viel machen. Abwandeln ja, kürzen nein

    VB.NET-Quellcode

    1. Dim TextsToFind = {"xy", "yz"}
    2. If TextsToFind.Contains(A) OrElse TextsToFind.Contains(B) Then
    Vielleicht würde mit dem echtem Code noch was möglich sein.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Man kann eine Variable mit einer Liste von Optionen abgleichen, also gucken, ob die Variable in der Optionenliste vorhanden ist.
    Du aber vergleichst zwei Variablen jeweils mit zweil Optionen, und unklar ist, ob dieselben Optionen sowohl mit A als auch mit B verglichen werden sollen, oder ob das nur Zufall ist.
    Den Or-Operator solltest du auf keinen Fall verwenden, der ist seit Einführung von OrElse (2005) für logische Verknüpfungen obsolet, und sollte nur noch für Bit-Operationen verwendet werden.

    Aber insgesamt - wenn es um zwei Variablen geht, und zwei Optionen - das ist nur mässig sinnvoll, das gross vereinfachen zu wollen.

    Bitte konkretisiere deine Anforderung, dass man nachvollziehen kann, wofür das gedacht ist, und unter welchen Umständen es sinnvoll erscheinen mag.
    Erstmal Danke für den Vorschlag.

    Erreichen möchte ich, dass wenn in einer oder in beiden von zwei Textboxen gar nichts oder eine 0 steht die Prozedur beendet wird. Sieht so aus:

    If A.Text = "" Or A.Text = "0" Or B.Text = "" Or B.Text = "0" Then Exit Sub

    Funktioniert ja so. Sah mir nur etwas unprofessionell aus :)
    Nee, da ist wirklich nicht viel zu machen, zumindest nicht ohne Kontext. Sieht zwar nach einer Validierungsfunktion aus. Aber solange nicht klar ist, was in der kompletten Sub passiert, geht da m.E. wirklich nicht mehr. Wäre DataBinding im Spiel, wäre es wahrscheinlich einfacher, aber so, ohne weiteres, nö.

    btw: hier nochmal zum Nachlesen: Der Unterschied zwischen And und AndAlso/Or und OrElse
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Hano schrieb:

    Sah mir nur etwas unprofessionell aus
    Wenn's richtig professionell aussehen soll, schreibst du dir eine Extension für das Textbox-Control.

    VB.NET-Quellcode

    1. <Extension>Function IsZeroOrEmpty(tb As TextBox) As Boolean
    2. Return tb.Text = "" OrElse tb.Text = "0"
    3. End Function

    und gestaltest deine Abfrage so:

    VB.NET-Quellcode

    1. If A.IsZeroOrEmpty OrElse B.IsZeroOrEmpty Then Exit Sub

    Ist aber mit Kanonen auf Spatzen geschossen.

    Um jedoch deinen Ansatz professioneller zu machen, beachte Post #2 bzw. Post #5:

    VB.NET-Quellcode

    1. If A.Text = "" OrElse A.Text = "0" OrElse B.Text = "" OrElse B.Text = "0" Then Exit Sub
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --