(править: Небольшая аккуратность кода.)
Использование foreach, как это, работает нормально.
var a = new List<Vector2>();
a.ForEach(delegate(Vector2 b) {
b.Normalize(); });
Однако следующее приводит к тому, что «Никакая перегрузка для метода ForEach не принимает 1 аргумент».
byte[,,] a = new byte[2, 10, 10];
a.ForEach(delegate(byte b) {
b = 1; });