2016-04-12 21 views
2

stoppen In meinem Code habe ich eine Methode mit den beiden Parametern. Ein Parameter nimmt einen int-Wert und der andere ein Array an.Wie kann ich die Variable vom Zurücksetzen

beispiel

public void NextSong(int i, TagLib.File[] queue) 
{ 
    i++; 
    SONG_URL = queue[i].Name; 
    Stop(); 
    Play(); 
} 

Mein Problem hier ist jedes Mal dieser Variablen wie so genannt werden:

NextSong(0, SongQueue); 

Es kehrt zurück auf die Menge im Parameterfeld platziert. Wie höre ich damit auf?

Antwort

2

Zwei Möglichkeiten:

public int NextSong(int i, TagLib.File[] queue) 
{ 
    i++; 
    SONG_URL = queue[i].Name; 
    Stop(); 
    Play(); 
    return i; 
} 

int i = 0; 
i= NextSong(i, SongQueue); 

Hier haben wir eine Variable von i dem Verfahren wird während des Verfahrens sind vorbei erhöhen wir die Variable und dann über den Rückpass zurück. Wir haben jetzt Bezug auf diese Variable.

ODER

public void NextSong(TagLib.File[] queue, out int i) 
{ 
    i++; 
    SONG_URL = queue[i].Name; 
    Stop(); 
    Play(); 
} 

int i = 0; 
NextSong(SongQueue, out i); 

Dies verwendet die Out-Funktionalität, die jemand erzwingt eine Variable zu übergeben, die zurückgegeben werden. Er übergibt die Variable als Referenz (Sie könnten auch ref verwenden, aber da int nicht null sein kann, ändert sich in diesem Fall nicht viel).

+0

Sehen Sie hier für weitere Details auf "out" und auch "ref": https://msdn.microsoft.com/en-us/library/t3c3bfhx.aspx – Draken

+1

Antwort ist richtig, auch einige Erklärung/Beschreibung. –

2

Das funktioniert wie erwartet, solange 0 weitergereicht wird, wird die Variable immer zurückgesetzt.

Was können Sie es tun, um die Unterschrift des NextSong Methode ändern Sie den Wert von i zu erhalten zurück:

public int NextSong(int i, TagLib.File[] queue) 
{ 
    i++; 
    SONG_URL = queue[i].Name; 
    Stop(); 
    Play(); 

    return i; 
} 

Dann in Ihrem Code Sie einige globale Wert 0 und rufen Sie die Methode wie folgt initialisieren: globalVariable = NextSong(globalVariable, SongQueue).

+0

Danke, ich habe es gelöst, indem ich eine globale Variable initialisiert habe, dann habe ich die Variable inkrementiert und den Methodenparameter hinzugefügt. Ich entfernte auch das Inkrement innerhalb der Methode Danke für die Hilfe obwohl! –

Verwandte Themen