myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Grundlagen von C# » Wie kann ich Codeblöcke in eine Methode übergeben?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Wie kann ich Codeblöcke in eine Methode übergeben?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Sebrahi
myCSharp.de-Mitglied

Dabei seit: 25.05.2020
Beiträge: 4


Sebrahi ist offline

Wie kann ich Codeblöcke in eine Methode übergeben?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo liebe Community,
gibt es eine Möglichkeit eine Methode zu erstellen die Anweisungen in geschweiften Klammern übergibt. Als Beispiel ich erstelle folgende Methode

C#-Code:
        public static void vier_mal_wiederholen()
        {
            for(int i=1;i<=4;i++)
            {
                // hier soll der Code rein der viermal wiederholt werden soll

            }

        }

Nun ist mein Ziel die Methode folgendermaßen aufrufen zu können.

C#-Code:
       vier_mal_wiederholen()
      {
         MessageBox.Show("hi");
      }

Also eine Methode erstellen die die Anweisungen in den geschweiften Klammern an eine bestimmte stelle in der Methode ausführt.

Ist dies möglich in C# zu realisieren und falls ja wie ist das möglich?
Neuer Beitrag 25.05.2020 03:31 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Spook Spook ist männlich
myCSharp.de-Mitglied

Dabei seit: 28.10.2008
Beiträge: 221
Entwicklungsumgebung: VS2019
Herkunft: Esslingen a.N.


Spook ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Sebrahi,

du kannst den Code der an einer anderen Stelle ausgeführt werden soll in eine Methode schreiben und diese dann über die Verwendung von Delegates an einer anderen Stelle ausführen:

C#-Code:
    public static void vier_mal_wiederholen()
    {
        for(int i=1;i<=4;i++)
        {
            // hier soll der Code rein der viermal wiederholt werden soll
        }
    }

    public static void drei_mal_wiederholen()
    {
        for(int i=1;i<=3;i++)
        {
            // hier soll der Code rein der dreimal wiederholt werden soll
        }
    }

    public static void Test(Action action)
    {
        action();
        MessageBox.Show("hi");
    }

    public static void Main()
    {
        Action action = vier_mal_wiederholen;
        Test(action);

        Test(drei_mal_wiederholen);
    }

Grüße
spooy
Neuer Beitrag 25.05.2020 07:52 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
inflames2k inflames2k ist männlich
myCSharp.de-Poweruser/ Experte

avatar-3407.gif


Dabei seit: 03.01.2010
Beiträge: 2.242
Entwicklungsumgebung: Visual Studio 2010 Express


inflames2k ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

aufbauend zu dem was Spook schrieb, könnte man das eventuell noch universeller machen.

Beispiel:

C#-Code:
public static void Repeat(Action action, int count)
{
     for(int i = 0; i < count; i++)
          action();
}

public static void Main()
{
      Repeat(PrintDate, 5);
}

private static void PrintDate()
{
     Console.WriteLine(DateTime.Now.ToString());
}

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von inflames2k am 25.05.2020 10:57.

Neuer Beitrag 25.05.2020 08:17 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
T-Virus T-Virus ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.04.2008
Beiträge: 1.655
Entwicklungsumgebung: Visual Studio, Codeblocks, Edi
Herkunft: Nordhausen, Nörten-Hardenberg


T-Virus ist offline Füge T-Virus Deiner Kontaktliste hinzu

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

@inflames2k
Fehlt in deinem count Parameter ggf. der Default Wert oder bei deinen Aufrufen der Count Parameter?
Und die Klammern beim Aufruf von Repeat für PrintDate sind doch eigentlich auch nicht nötig, da die Methode als Parameter übergeben wird.

T-Virus

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von T-Virus am 25.05.2020 09:58.

Neuer Beitrag 25.05.2020 09:57 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 14.292
Herkunft: BW


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

T-Virus, dann korrigier es doch einfach :-)

C#-Code:
        public static void Repeat(Action action, int count)
        {
            for (int i = 0; i < count; i++)
            {
                action();
            }
        }

        public static void Main()
        {
            Repeat(() => PrintDate(), 5);
            // Alternativ die Kurzschreibweise
            Repeat(PrintDate, 5);
        }

        private static void PrintDate()
        {
            Console.WriteLine(DateTime.Now.ToString());
        }
Neuer Beitrag 25.05.2020 10:45 Beiträge des Benutzers | zu Buddylist hinzufügen
inflames2k inflames2k ist männlich
myCSharp.de-Poweruser/ Experte

avatar-3407.gif


Dabei seit: 03.01.2010
Beiträge: 2.242
Entwicklungsumgebung: Visual Studio 2010 Express


inflames2k ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

@T-Virus:

Huch. Kommt davon wenn man nicht noch mal sauber drüber liest.
Danke.
Neuer Beitrag 25.05.2020 10:57 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 6 Monate.
Der letzte Beitrag ist älter als 6 Monate.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 28.11.2020 09:46