我对 Java 很满意
ArrayList<String> list = new ArrayList<>();
Iterator<SignalEvent> it = list.iterator();
while (it.hasNext()) {
String s = it.next();
if(s.equals("delete me")){
it.remove();
}
}
不是很开心,但对 C++ 感觉还不错
std::list<MyObject*> mylist;
for (list<MyObject*>::iterator it = mylist.begin(); it != mylist.end();)
{
MyObject* se = (*it);
if(se->bDelete == true)
it = mylist.erase(it);
else
it++;
}
现在谈到 C#,这是最好的方法吗?
你有迭代器的方法吗?
考虑到性能和可读性,您有更好的建议吗?
for( int i = arrayList.Count - 1; i >= 0; i -- )
{
if( arrayList[ i ].ToString() == "del" )
{
arrayList.RemoveAt( i );
}
}
注意: List.RemoveAll(Predicate match) 必须引入一个新函数,不是吗?