Laden...

Kann es Methoden(aufrufe) innerhalb von Methoden geben?

Erstellt von RafaelVogt vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.073 Views
R
RafaelVogt Themenstarter:in
27 Beiträge seit 2019
vor 4 Jahren
Kann es Methoden(aufrufe) innerhalb von Methoden geben?

Hallo an Alle,

anstatt mich weiter damit zu beschäftigen, Code-Stückchen aneinanderzureihen um meine Ziele zu erreichen, habe ich mich dazu entschlossen, C# von Grundauf neu zu lernen. Dazu benutze ich das Buch C# 8 mit Visual Studio 2019 und arbeite dieses Auch durch. Nun zu meiner Frage:


namespace _02_Einführung_Variablen
{
    class Program
    {
        static void Main(string[] args)
        {
            int firstvalue;
            firstvalue = 1000;

            int secondvalue = 1000;
            
            int a = 1, b = 2;

            Console.WriteLine("firstvalue = {0}", firstvalue);
            Console.ReadKey();
        }
    }
}

Im Buch wird einerseits von Methoden und Anweisungen gesprochen und gesagt, dass Main hier die Methode ist, welcher 2 Schlüsselwörter vorangehen und dann wird bezüglich Console.WriteLine gesagt, dass dies auch eine Methode ist.

Kann es also Methoden innerhalb von Methoden geben, oder ist die Begrifflichkeit nicht ganz korrekt, oder verstehe ich hier was falsch?

MFG NewBee

R
317 Beiträge seit 2006
vor 4 Jahren

Servus,

Deine Main-Funktion sowie Console.WriteLine sind beides Methoden, das ist soweit korrekt. Ich würde es in deinem Fall jedoch so spezifizieren:

Deine "Main"-Methode ist eine Methodendeklaration, d.h. du definierst bzw. erstellst selbst eine Methode, die bestimmte Anweisungen ausführt

Das Console.WriteLine ist ein Methodenaufruf, d.h. du rufst eine bestehende Methode des .NET Frameworks, oder auch eine selbst von dir deklarierte Methode auf.

Mit diesen Begriffen gilt dann folgendes: Du kannst keine Methode innerhalb einer anderen Methode deklarieren (Ausnahme sind anonyme Methoden), allerdings kannst du beliebige Methoden aus einer anderen Methode aufrufen. Und dies sowohl mehrfach, als in Schleifen und auch verschiedenen Ebenen.

Hoffe das machts etwas klarer 😃

Daniel

R
RafaelVogt Themenstarter:in
27 Beiträge seit 2019
vor 4 Jahren

Vielen herzlichen Dank. Jetzt ist das Chaos wieder geordnet (-:

R
RafaelVogt Themenstarter:in
27 Beiträge seit 2019
vor 4 Jahren

WriteLine ist dabei dann die Methode richtig? Sorry, ich will, dass es endlich richtig im Kopf ist.

2.079 Beiträge seit 2012
vor 4 Jahren

WriteLine ist dabei dann die Methode richtig? Sorry, ich will, dass es endlich richtig im Kopf ist.

Genau. "WriteLine" ist die Methode und "Console" die Klasse, in der sie deklariert ist.
"Console.WriteLine("Hello World!")" ist der Methodenaufruf.

Ein kleiner Teil von robbyrcs Aussage stimmt nicht ganz:

Man kann Methoden in einer anderen Methode deklarieren, das geht ab C#7.0:
https://docs.microsoft.com/de-de/dotnet/csharp/programming-guide/classes-and-structs/local-functions

Ob das ein guter Stil ist, das muss jeder für sich entscheiden.

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.