用Unity时,遍历添加到链中的AudioSource组件对象,如果播放停止,就删除它。(为对象添加这个组件时就记录下组件信息,保存在链表中)。
练习C#中链表,foreach 遍历链表,操作出现这个错误:InvalidOperationException: Collection was modified; enumeration operation may not execute.
foreach (AudioSource d in mAudioSource)
{
if (!d.isPlaying)
{
mAudioSource.Remove(d);
}
}
问题原因是,foreach不能用来修改链表中数据,增、删、改。
于是改成for循环或while循环:
for (int i = mAudioSource.Count - 1; i >= 0; i--)
{
if (!mAudioSource[i].isPlaying)
{
mAudioSource.Remove(mAudioSource[i]);
}
}