如何阻止变量重置

时间:2016-04-12 09:53:53

标签: c# .net taglib-sharp cscore

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

例如

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

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

NextSong(0, SongQueue);

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

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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的变量传递给方法,在方法中我们递增该变量,然后通过返回将其传回。我们现在引用该变量。

OR

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不能为空,因此在这种情况下它不会发生太大变化)。