2

在我的代码中,我有一个带有两个参数的方法。一个参数接受一个 int 值,另一个接受一个数组。

例如

 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,但由于int不能为 null,因此在这种情况下不会有太大变化)。

于 2016-04-12T09:59:45.993 回答