C# if mit einem Vergleichsoperator verkürzt auf mehrere Variablen abfragen.

NSR

Mitglied
Sers Comunity,

Also es geht darum, dass ich einen Weg suche mit einem Vergleichsoperator auf mehrere Variablen abzufragen.

Kleines Beispiel:
Code:
string a,b,c;
if(TextBox.Text == a | b | c)
{
}

So dass er den Text in der TextBox auf a, b und c vergleicht.

ps. Ich weiß natürlich, dass man das auch mit nem switch oder wie man des halt sonst macht mit:
Code:
string a,b,c;
if(TextBox.Text == a | TextBox.Text == b | TextBox.Text == c)
{
}
.

Mir geht es aber besonders darum eine verkürzte Schreibweise zu haben.

Danke schon mal im Vorraus.
Nico
 
Eigentlich relativ simpel.

Man erstelle sich einfach eine vergleichen Methode mithilfe von params.

Hier mal ein voll funktionsfähiges Consolenbeispielprogramm mit Kommentierung (Just eben geschrieben)

Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //Teststrings
            string s1 = "a", s2 = "a", s3 = "a", s4 = "a", s5 = "b"; 

            //Wird True schreiben, da alle 3 strings (s2 bis s4) mit s1 übereinstimmen
            Console.WriteLine(vergleiche(s1, s2, s3, s4));
            //Wird False zurückgeben, da der letzte 4. string s5 nicht mit s1 übereinstimmt.
            Console.WriteLine(vergleiche(s1, s2, s3, s4, s5));

            //Auf Tastendruck warten
            Console.ReadKey(true);

        }

        /// <summary>
        /// Vergleicht den ersten string mit den restlichen strings und gibt true zurück, falls alle mit dem Hauptstring übereinstimmen.
        /// </summary>
        /// <param name="Hauptstring">Der Hauptstring</param>
        /// <param name="Vergleichsstrings">Strings die mit dem Hauptstring verglichen werden sollen.</param>
        /// <returns>Ergebnis</returns>
        static bool vergleiche(string Hauptstring, params string[] Vergleichsstrings)
        {
            //Gehe alle übergeben Parameter durch und vergleiche mit Hauptstring
            //Wenn einer nicht mit dem Hauptstring übereinstimmt kann bewusst false zurückgegeben werden.
            foreach (string s in Vergleichsstrings)
            {
                if (s != Hauptstring)
                    return false;
            }

            return true;
        }
    }
}

Der Methode vergleiche übergibst du einfach einen Hauptstring (in deinem Falle die TextBox.Text Eigenschaft) und die restlichen strings mit der der TextBox.Text-String verglichen werden soll.

Hoffe es ist dir so recht.
Die Methode lässt sich denke ich einfach verstehen und auhc simpel in einen Ifsatz ein bauen.

Code:
string a,b,c;
if(vergleiche(TextBox.Text,a,b,c))
{
}

//EDIT

Alternativ kannst du auch eine Extension verwenden.

Das sehe dann so aus:

Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //Teststrings
            string s1 = "a", s2 = "a", s3 = "a", s4 = "a", s5 = "b"; 

            //Wird True schreiben, da alle 3 strings (s2 bis s4) mit s1 übereinstimmen
            Console.WriteLine(s1.vergleiche(s2, s3, s4));
            //Wird False zurückgeben, da der letzte 4. string s5 nicht mit s1 übereinstimmt.
            Console.WriteLine(s1.vergleiche(s2, s3, s4, s5));

            Console.WriteLine();

           

            //Auf Tastendruck warten
            Console.ReadKey(true);

        }

    static class Extension
    {
        public static bool vergleiche(this string instans, params string[] Vergleichswerte)
        {
            //Gehe alle übergeben Parameter durch und vergleiche mit Hauptstring
            //Wenn einer nicht mit dem Hauptstring übereinstimmt kann bewusst false zurückgegeben werden.
            foreach (string s in Vergleichswerte)
            {
                if (s != instans)
                    return false;
            }

            return true;
        }
    }

}

in deinem Beispiel:
Code:
string a,b,c;
if(TextBox.Text.vergleiche(a,b,c))
{
}

Fertig. Kurze Schreibweise ;)

Gruß Drache2.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück