标题说明了一切,我在迭代我已经制作的歌曲(歌曲)并在找到它后删除特定歌曲时遇到了一些麻烦。我已经确认位置是正确的,并尝试手动输入歌曲的位置无济于事。
Sub delete(location As String)
Dim tempS As Song
For Each tempS In songs
If tempS.getLocation().toLower().Equals(location) Then
songs.Remove(tempS)
End If
Exit For
Next
End Sub
这个项目还处于起步阶段,歌曲与其自身唯一关联的是它的存储位置(ei C:\ Music \ Albums \ Once \ Nemo.mp3)。非常感谢!
答案 0 :(得分:0)
您的代码中存在一些问题。
首先,您不是在比较相同的情况,因为位置之后没有.ToLower()。
其次,您可能会在列表中删除项目,同时仍在迭代它。这可能会导致问题。
使用linq可以大大改善这一点。这样你就可以在一行中完成所有工作:
Public Sub DeleteByLocation(location As String)
songs.RemoveAll(Function(x) x.GetLocation().Equals(location, StringComparison.OrdinalIgnoreCase))
End Sub
如果您确定只有一个匹配的位置,请将RemoveAll
更改为Remove
以提高效果