У меня есть LocalBuilder
, который по сути является массивом. Я могу использовать его в IL просто отлично, и я могу загрузить его, используя OpCodes.Ldlen
. Мне было просто интересно, есть ли способ получить длину от вершины стека до некоторой фактической переменной. Я ищу что-то вроде
int lengthVariable = 0;
IL.Emit(OpCodes.Ldloc, arr);
IL.Emit(OpCodes.Ldlen);
IL.Emit(??????, lengthVariable);
Я хочу получить эту переменную, чтобы я мог запустить все oop в зависимости от длины массива. Я знаю, что могу создать al oop в IL, но я подумал, что было бы намного удобнее, если бы это было возможно.
Редактировать: Я пытаюсь сделать здесь 1001 * 1009. *
Вызовите внешний метод (который возвращает массив). Выполните некоторые действия со всеми элементами этого массива. В настоящее время я делаю это, имея две копии массива (IL и не-IL). Используя копию без IL, я получаю длину, а затем выполняю действие n раз.
Проблема в том, что мне теперь приходится дважды вызывать внешний метод. Я надеялся, что смогу получить длину из массива IL, чтобы я мог напрямую * l oop, не вызывая внешний метод дважды. Я знаю, что могу написать для l oop в IL, но я как бы избегал написания ветвящихся операторов IL.