に格納されている Tab オブジェクトのコレクションがありますeditor.tabs
。1 つを除くすべてのタブをリストから削除しようとしています。私のコードは次のようになりますが、明らかな理由で機能しません。
// 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 が最初にこの関数に入ったときtab = editor.currentTab
の値と等しいかどうかを尋ねたいと思います。editor.currentTab
のディープコピーを作ろうと思ったのですeditor.currentTab
が、やり過ぎです。
editor.currentTab
また、最初に関数に入って と比較したときの のハッシュを計算しようとしましtab.GetHashCode()
たが、それもうまくいきませんでした。誰か考えがありますか?
編集:
そして、バグが CloseTab 関数にあることに気付きました! おっとっと!