none
Verständnisfragen: Auf Variablen außerhalb "void" zugreifen und eigene Funktionen RRS feed

  • Frage

  • Hallo :).

    Ich bin ziemlicher Anfänger was C# angeht und habe einige Verständnisfragen.

    1. Ich habe eine Funktion "private void xyz_cyz()", in der ich Variablen deklariere und beschreibe -

    wie kann ich jedoch nun auf diese Variable außerhalb der Funktion zugreifen? Vermutlich gar nicht?

    Also muss ich die Variable doch irgendwie public deklarieren, oder wie funktioniert das?

    2. Ich stehe leider total auf dem Schlauch..., ich würde gerne eine eigene Funktion namens xyz() erstellen.

    Wenn ich dort nun einen Befehl hineinschreibe - möchte ich diesen gerne überall mit nur der Abkürzung xyz()

    verwenden. Wie funktioniert soetwas?

    Die passenden "Suchwörter" würden mir vollkommen reichen, dann könnte ich das selber heraussuchen.

    Leider kenne ich micht mit den Fachwörtern noch nicht so richtig aus, und kann ja nicht einen langen Text bei Google suchen.

    Vielen Dank für die Antworten!

    (Falls ich keine zwei Fragen aufeinmal stellen durfte, werde ich dies dann löschen.)



    • Bearbeitet jokona Donnerstag, 19. April 2012 17:32
    Mittwoch, 18. April 2012 17:43

Antworten

  • Hallo,

    bei private void xyz_cyz() handelt es sich um eine Methode.

    Variablen, die Du dort deklarierst, sind außerhalb der Methode nicht zugänglich,
    es handelt sich dabei um (methoden-)lokale Variablen.

    Um Variablen (Felder) auch nach dem Methodenaufruf verwenden zu können, deklariere sie auf Klassenebene.
    Die Methode (xyz_cyz) kann dann ebenfalls damit arbeiten.

    Wobei für von außerhalb der Klasse zugängliche Daten Eigenschaften vorziehen sollte,
    da man dort den Zugriff auf die Daten (Felder) besser kontrollieren kann.

    Kleines Beispiel:

    public class MeineKlasse
    {
    	// Eine Eigenschaft
        public int MeineEigenschaft { get; set; }
    	// ein Feld (Variable)
    	public int MeineFeld;
    
        public void xyz_cyz()
        {
            this.MeinEigenschaft = 4711;
    		this.MeinFeld = 4712;
        }
    }
    

    Zu 2.)

    Prozeduren und Funktionen ganz ohne Klassenbezug gibt es ohne in einer objektorientierten Sprache wie C# nicht
    (das gibt es nur in den prozeduralen Sprachen)

    Man kann jedoch Methoden als statische Methoden definieren, siehe
    Statische Klassen und statische Klassenmember (C#-Programmierhandbuch)
    (ebenso auch Variablen und Eigenschaften).

    Dabei musst Du den Namen der Klasse voranstellen, damit C# die Methode finden kann.
    Siehe die Beispiele obigen Link für die Math-Klasse.

    Mehr als Hinweis:
    Viele statische Methoden (oder Variablen) sollten in der objektorientierten Programmierung nicht vorkommen.

    Gruß Elmar


    • Als Antwort vorgeschlagen Stefan FalzModerator Mittwoch, 18. April 2012 19:19
    • Als Antwort markiert jokona Donnerstag, 19. April 2012 17:32
    Mittwoch, 18. April 2012 18:05
    Beantworter