Anfängerfrage zu C# Programmierkonzepten



  • Ich bin gerade dabei, mich mal näher mit C# auseinanderzusetzen. Bisher bin ich einigermassen in C++ bewandert, muss aber feststellen, dass doch einiges anders ist.

    Jetzt eine konkrete Frage. Ich habe eine WinForms Klasse (eigentlich nen Event Handler, wenn ein Button gedrückt wird):

    namespace SimpleWinForms
    {
        public partial class Wortvergleich : Form
        {
            public Wortvergleich()
            {
                InitializeComponent();
            }
    
            // Vergleiche  Button
            // Initiert Wortvergleich
            private void Btn_Clicked(object sender, EventArgs e)
            {
                MessageBox.Show("Button wurde gedrueckt");
    
            }
    (...)
    

    Jetzt würde ich gerne in Btn_Clicked eine Methode "CompareStrings" aufrufen, die in einer anderen Datei steht:

    namespace SimpleWinForms
    {
        class CompareEngine
        {
    
            public void m_CompareStrings(string s1, string s2)
            {
                if (StringComparer.Compare(st_target, st_source) != 0)
                {
                    MessageBox.Show("Die beiden Wörter sind nicht identisch");
                }
                else
                {
                    MessageBox.Show("Die beiden Wörter sind identisch");
                }
            }
    }
    

    Wie mache ich das?



  • namespace SimpleWinForms
    {
        public partial class Wortvergleich : Form
        {
            public Wortvergleich()
            {
                InitializeComponent();
            }
    
            // Vergleiche  Button
            // Initiert Wortvergleich
            private void Btn_Clicked(object sender, EventArgs e)
            {
                CompareEngine engine = new CompareEngine();
                engine.m_CompareStrings("Hallo", "Welt");
            }
    (...)
    

    btw: Laut MS Naming Guidelines sollten Funktionsname ohne Präfix (m_) und groß geschrieben werden also statt "m_CompareStrings" einfach "CompareStrings"



  • Fange auch eben an mit c# zu programmieren, deshalb ist meine Antwort eventuell nicht korrekt.

    Damit du die Funktion aufrufen kannst, brauchst du wohl ein Objekt der Klasse CompareEngine. Ansonsten die Funktion als static deklarieren?



  • cof schrieb:

    Damit du die Funktion aufrufen kannst, brauchst du wohl ein Objekt der Klasse CompareEngine. Ansonsten die Funktion als static deklarieren?

    Beides richtig. Aber static sollte man prinzipiell sehr sparsam verwenden, weil das unerwünschte Seiteneffekte geben kann und die Übersicht nicht vereinfacht.

    In Deinem Beispiel wäre das aber nicht zu befürchten.


Anmelden zum Antworten