在我的代码中,我有一个带有两个参数的方法。 一个参数接受一个int值,另一个接受一个数组。
例如
public void NextSong(int i, TagLib.File[] queue)
{
i++;
SONG_URL = queue[i].Name;
Stop();
Play();
}
我的问题是每次调用这个变量时都是这样的:
NextSong(0, SongQueue);
它将恢复为参数字段中的金额。我该如何阻止它?
答案 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
不能为空,因此在这种情况下它不会发生太大变化)。