2

私のコードには、2 つのパラメーターを持つメソッドがあります。1 つのパラメーターは int 値を受け取り、もう 1 つのパラメーターは配列を受け取ります。

例えば

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

ここでの私の問題は、この変数が次のように呼び出されるたびに発生することです。

NextSong(0, SongQueue);

パラメータフィールドに入力された量に戻ります。どうすればこれを止めることができますか?

4

2 に答える 2

2

0 が渡され続ける限り、変数は常にリセットされます。

メソッドのシグネチャを変更してNextSongの値を返すためにできることi:

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

    return i;
}

次に、コードでいくつかのグローバル値を初期化し0、次のようにメソッドを呼び出しますglobalVariable = NextSong(globalVariable, SongQueue)

于 2016-04-12T09:58:56.293 に答える
2

ふたつのやり方:

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);

ここでは、変数をiメソッドに渡しています。メソッド中にその変数をインクリメントしてから、return 経由で返します。これで、その変数への参照ができました。

また

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

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

これは out 機能を使用し、返される変数を誰かに渡すよう強制します。参照によって変数を渡します (ref を使用することもできますが、intnull にすることはできないため、この場合はあまり変化しません)。

于 2016-04-12T09:59:45.993 に答える