1. #1
    Avatar von Snees
    Registriert seit
    18.11.2011
    Beiträge
    1.001
    Thanked 590 Times in 319 Posts

    Standard [C#] Methodenüberladung

    Hallo, ich habe ein kleines Beispiel für eine einfache Methodenüberladung geschrieben, weil ich dieses Thema interessant finde.

    Person.cs
    Code:
    /* Methodenüberladung
     * Autor: Nico @ U-Hacks.net
    */
    
    
    namespace Methodenüberladung
    {
        class Person
        {
            /// <summary>
            /// Die Persopn
            /// </summary>
            public Person()
            {
            }
    
            /// <summary>
            /// Der Name
            /// </summary>
            public string Name { get; set; }
            /// <summary>
            /// Das Alter
            /// </summary>
            public int Alter { get; set; }
            /// <summary>
            /// Der Wohnort
            /// </summary>
            public string Wohnort { get; set; }
    
            /// <summary>
            /// Informationen mit der 1. Überladung ausgeben
            /// </summary>
            /// <param name="_name">Name</param>
            /// <returns></returns>
            public string information (string _name)
            {
                Name = _name;
                string info = "Mein Name ist " + Name;
                return info;
            }
    
            /// <summary>
            /// Informationen mit der 2. Überladung ausgeben
            /// </summary>
            /// <param name="_name">Name</param>
            /// <param name="_alter">Alter</param>
            /// <returns></returns>
            public string information(string _name, int _alter)
            {
                Name = _name;
                Alter = _alter;
                string info = "Mein Name ist " + Name + " und ich bin " + Alter + " Jahre alt.";
                return info;
            }
    
            /// <summary>
            /// Informationen mit der 3. Überladung ausgeben
            /// </summary>
            /// <param name="_name">Name</param>
            /// <param name="_alter">Alter</param>
            /// <param name="_wohnort">Wohnort</param>
            /// <returns></returns>
            public string information(string _name, int _alter, string _wohnort)
            {
                Name = _name;
                Alter = _alter;
                Wohnort = _wohnort;
                string info = "Mein Name ist " + Name + ", ich bin " + Alter + " Jahre alt und wohne in " + Wohnort + ".";
                return info;
            }
        }
    }
    Program.cs
    Code:
    /* Methodenüberladung
     * Autor: Nico @ U-Hacks.net
    */
    
    using System;
    
    namespace Methodenüberladung
    {
        class Program
        {
            static void Main(string[] args)
            {
                Person Ich = new Person();
                string Ueberladung1 = Ich.information("Nico");
                string Ueberladung2 = Ich.information("Nico", 18);
                string Ueberladung3 = Ich.information("Nico", 18, "Köln");
    
                Console.WriteLine(Ueberladung1);
                Console.WriteLine(Ueberladung2);
                Console.WriteLine(Ueberladung3);
    
                Console.ReadKey();
            }
        }
    }
    Man kann nun sehen, dass es drei verschiedene Möglichkeiten gibt die Methode Ich.information() zu nutzen.
    Obwohl diese drei Methoden den gleichen Namen haben, funktionieren sie auf verschiedene Art und Weise.




  2. #2

    Registriert seit
    28.10.2011
    Beiträge
    625
    Thanked 279 Times in 168 Posts

    Standard AW: [C#] Methodenüberladung

    Naja, so Mystisch/Besonders ist es auch nicht.

    Die Klasse kennt seine Methoden unteranderem auch welche Parameter diese besitzen (und wieviele).

    Ob ich jetzt nun diese Methoden nutze:
    information(ARG1)
    information(ARG1, ARG2, ARG 3)
    Oder ob ich die Methoden anders benenne:
    nur_name(ARG1)
    name_alter_geschlecht(ARG1, ARG2, ARG 3)
    Das ist relativ wurscht.

  3. #3
    Avatar von Snees
    Registriert seit
    18.11.2011
    Beiträge
    1.001
    Thanked 590 Times in 319 Posts

    Standard AW: [C#] Methodenüberladung

    Das ist mir klar, aber ich wusste bis vor kurzem nicht, dass das geht und ich denke da bin ich nicht alleine, deswegen habe ich den Code gepostet. Die Codes, die ich poste sind sowieso an die Anfänger gerichtet.

  4. #4

    Registriert seit
    28.10.2011
    Beiträge
    625
    Thanked 279 Times in 168 Posts

    Standard AW: [C#] Methodenüberladung

    Ja schon recht. Aber dann solltest du (Gerade für Anfänger) genauere Informationen geben. Denn als Anfänger weiß man mit deinem "Überladen" nichts anzufangen.

    Es hat hier auch nichts mit "Überladen" zu tun, sondern mit der Handhabung von Methoden/Klassen.

    Du müsstest also eher erläutern was Klassen und was Methoden sind und was man hiermit machen kann. Methoden können beispielsweise X beliebige Parameter haben. Es können auch Methoden-Namen mehrfach genutzt werden indem man die Parameterreferenz ändert.

    Methode1(1)

    würde beispielsweise eine ganz andere Methode aufrufen als

    Methode1("Test")

    weil hier halt die Argumente/Parameter andere Datentypen haben (Einmal Integer und einmal String).

  5. The Following User Says Thank You to Bubble Gum For This Useful Post:

    Snees (19.11.2011)

  6. #5

    Registriert seit
    09.11.2011
    Beiträge
    121
    Thanked 129 Times in 46 Posts

    Standard AW: [C#] Methodenüberladung

    Du kannst auch direkt Standardparameterwerte setzen.

    Code:
    public void printBla(String text, ConsoleColor c = ConsoleColor.Gray) {
        Console.ForegroundColor = c;
        Console.WriteLine(text);
    }
    Aufruf wäre dann:
    Code:
    printBla("Ich bin cool!");
    Oder:
    Code:
    printBla("Ich bin noch cooler, h3h3.", ConsoleColor.Red);
    MfG

  7. The Following User Says Thank You to Brainy For This Useful Post:

    Snees (19.11.2011)

Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.