我意识到我没有办法通过LinkedList.Enumerator来代替价值。
例如,我尝试将下面的Java代码移植到C#:
Java代码:
ListIterator<Double> itr1 = linkedList1.listIterator();
ListIterator<Double> itr2 = linkedList2.listIterator();
while(itr1.hasNext() && itr2.hasNext()){
Double d = itr1.next() + itr2.next();
itr1.set(d);
}C#代码:
LinkedList<Double>.Enumerator itr1 = linkedList1.GetEnumerator();
LinkedList<Double>.Enumerator itr2 = linkedList2.GetEnumerator();
while(itr1.MoveNext() && itr2.MoveNext()){
Double d = itr1.Current + itr2.Current;
// Opps. Compilation error!
itr1.Current = d;
}还有其他我能用的方法吗?
发布于 2012-10-08 09:41:15
也许仅仅建立一个新的列表就足够了:
linkedList1 = new LinkedList<double> (linkedList1.Zip(linkedList2, (first, second) => first + second));如果需要更改原始列表,则可能需要更改
var tmp = linkedList1.Zip(linkedList2, (first, second) => first + second).ToList ();
linkedList1.Clear ();
linkedList1.AddRange (tmp);https://stackoverflow.com/questions/12778973
复制相似问题