Давно в этой же теме вот в этом сообщении был дан ответ на то, как передать массив строк во внешнюю dll, написанную на C#, с возможностью изменений значений. Хочу вернуться к этому же вопросу: делаю так (см. код, вариант 1), а массив не меняется. Размер массива я определяю ранее и делаю перед вызовом метода из dll ReDim. Если же в цикле (вар. 2) менять - то значения меняются (проверяю результат в MapBasic'е). Почему 1-й вариант не срабатывает?
public static int GetTabFiles(string path, bool b, string[] sArrVal) { // Вариант 1 sArrVal = Directory.GetFiles(path, "*.TAB", b ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly); // Вариант 2 string[] sArr = Directory.GetFiles(path, "*.TAB", b ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly); for (int i = 0; i < sArrVal.Count(); i++) { sArrVal[i] = sArr[i]; } return sArrVal.Count(); }