我如何阻止变量重置

How do i stop the variable from resetting

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

例如

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

我的问题是每次都这样调用这个变量:

NextSong(0, SongQueue);

它恢复到参数字段中的金额。我该如何阻止它?

正如预期的那样工作,只要 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).

两种方式:

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 功能,它强制某人传递一个将被 returned 的变量。它通过引用传递变量(您也可以使用 ref,但由于 int 不能为 null,因此在这种情况下它不会有太大变化)。