我有一个 Tab 对象的集合存储在editor.tabs
. 我正在尝试从列表中删除除一个之外的每个选项卡。这是我的代码现在的样子,由于明显的原因它不起作用:
// We need to make a copy of editor.tabs because other foreach fails
// since CloseTab actually removes tabs from editor.tabs.
// Basically, during the enumeration of a collection, that collection
// cannot change. So we just iterate over pointers instead.
List<Tab> tempList = new List<Tab>();
foreach (Tab tab in editor.tabs)
{
tempList.Add(tab);
}
foreach (Tab tab in tempList)
{
//Close everything but the current tab
if (tab != editor.currentTab)
{
CloseTab(tab);
}
}
editor.currentTab
在 内进行了修改CloseTab
,因此询问是否tab = editor.currentTab
不是正确的问题。我们想问一下 tab 是否等于editor.currentTab
我们第一次进入这个函数时的值。
我想过做一个深拷贝editor.currentTab
,但这感觉太过分了。
我还尝试计算editor.currentTab
我们第一次输入函数时的哈希值,然后将其与 进行比较tab.GetHashCode()
,但这也不起作用。有人有想法吗?
编辑:
我刚刚意识到这个错误在我的 CloseTab 函数中!哎呀!