|
|
|
Forum Member
      
участник
Last Login: 22.01.2008 17:30
Сообщ.: 43,
Visits: 366
|
|
| 1. У объекта Obj есть метод со следующей сигнатурой: Method(ref System.Array b) Мне надо передать ему массив double[] d. Не нашёл нечего лучшего как: Array a; a=d; Obj.Method(ref a); Но это не комильфо... А как надо? 2. Как в С# реализовать следующий VB'шный оператор: ReDim Preserve buf(N)
|
|
|
|
|
Supreme Being
      
администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421,
Visits: 49 251
|
|
| 2. надо создать второй массив string[] buf2 = new string[N]; Array.Copy(buf, buf2, buf.Length);
|
|
|
|
|
Supreme Being
      
участник
Last Login: 29.10.2007 19:07
Сообщ.: 292,
Visits: 3 426
|
|
| 2. В С# нет аналога как VB.NET оператора переопределения размера массива - ReDim поэтому копируй массив как указал Алексей
|
|
|
|
|
Forum Member
      
участник
Last Login: 22.01.2008 17:30
Сообщ.: 43,
Visits: 366
|
|
| Прошу пардону, забыл сказзать, что: - аналог Redim'a должен стоять в цикле; - число шагов цикла заранее неизвестно; - на каждом шаге цикла размер buf'а возрастает. Поэтому к предложенному решению придётся добавить ещё два действия: - увеличить размер buf'а; - обратно скрпировать данные из buf2 в buf. Но два копирования - что-то многовато. Не верится, что внутренняя реализация ReDim'a использует два копирования. Получается, что в данном случае VB рулит?
|
|
|
|
|
Supreme Being
      
администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421,
Visits: 49 251
|
|
| попробуй пересмотреть логику в сторону ухода от "redim'ов" в цикле.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 23.04.2007 23:36
Сообщ.: 1 541,
Visits: 16 997
|
|
| 1. Видимо, иначе никак, т.к. "A ref or out argument must be an assignable variable". А поэтому TypeCast тут не пройдет. 2. Array.Resize<T>(ref T[] arr, int newSize). А вообще, если явление массвое, то лучше избегать этого и использовать списки или MemoryStream, а потом приводить их к массиву (ToArray();)
|
|
|
|
|
новичок
      
участник
Last Login: 18.08.2006 17:53
Сообщ.: 3,
Visits: 5
|
|
Вопрос к инициатору темы : а заморочка имеет под собой основание? Не проще ли использовать ArrayList или HashTable? Не надо задавать длину массива, можно постоянно добавлять элементы.
--
Корректно поставленный вопрос содержит 50% ответа
|
|
|
|
|
Forum Member
      
участник
Last Login: 22.01.2008 17:30
Сообщ.: 43,
Visits: 366
|
|
| Method(...) - не мой и я не могу менять его сигнатуру.
|
|
|
|