流れぶった切ってちょい質問

struct A {
int x;
int xsize;
}

int sx = 0;
List<A> alist = new List<A>();
alist.ForEach(delegate(A a) {
a.x = sx;
sx += a.xsize;
}

こういう感じで、構造体リストのある項目を全書き換えしたいんだけども、
forループするしか手はない?
いちいちコピー&書き戻しが発生するからできればしたくない・・・