Кстати, если элементы массива не слишком длинные (помещаются в операнд команды XOR), то предки завещали нам менять их в памяти прямо по месту, тремя команами XOR - есть такой трюк. Но это уже, наверное, не для C#.ну не факт.. новые поколения дотнет вернулись к железу лицом.. на грани ассемблерных вставок )).. но естественно тут дело будет в типах данных )))
//...some code omitted
тоже легко вынести в лямбду, тогда тело цикла вырождается в одну строку. и код читаемый, поддерживаемый, тестируемый //...declarations and initializations omitted
for(var stop=false; !stop; )
{
//...some code omitted
if (!(stop = (j == i))
(i, j) = (j, i);
}
(a, b) = (b, a);
{
swap(i, j);
i = j;
}
swap
вы используете?i = j;
???
не пробовали
ну или если известно что это разнотипный набор, скопировать (смапить) по нужно смещению, а далее интерпретировать как нужный тип? .. это надежнее чем гадать