Модераторы: Partizan, gambit

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Двухмерный динамичиекий масив? 
:(
    Опции темы
WaReZMEN
Дата 14.2.2007, 04:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 9.6.2006
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: 3



Раньше я писал на Delphi И там были динамические масивы и любой размерности
(Mas: Array of Array of Integer)
А как токае сделать в C#?
PM MAIL ICQ   Вверх
Idsa
Дата 14.2.2007, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



Можно, например, сделать вот так:
Код

List<List<int>> a = new List<List<int>>;

К переменной a можно обращаться через индексаторы: a[i][j].


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
ivashkanet
Дата 14.2.2007, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



А если просто массив, то их два типа:
Код

int[][] // ---- массив массивов
int[,]  // ---- двумерный массив


P.S. Можно конечно и большемерные
PM MAIL WWW ICQ   Вверх
Naum
Дата 14.2.2007, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 8
Всего: 15



Цитата(WaReZMEN @  14.2.2007,  05:58 Найти цитируемый пост)
динамические масивы

А в C# есть динамические массивы? Например, в VB.Net 
Код

Dim cells() as Cell
Redim cells(-1)
Do While (Condition())
   Redim Preserve cells(cells.Lenght)
   cells(Ubound(cells)) = New Cell()
Loop




--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
mr.DUDA
Дата 14.2.2007, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



А динамических массивов вообще не бывает в природе  smile 

Код
Module Module1
    Sub Main()
        Dim arr(10) As Integer
        arr(1) = 1
        ReDim Preserve arr(11)

    End Sub
End Module


Раскладывается в рефлекторе на:
Код
[STAThread]
public static void Main()
{
      int[] arr = new int[11];
      arr[1] = 1;
      arr = (int[]) Utils.CopyArray((Array) arr, new int[12]);
}





--------------------
user posted image
PM MAIL WWW   Вверх
Naum
Дата 14.2.2007, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 8
Всего: 15



Цитата(mr.DUDA @  14.2.2007,  13:09 Найти цитируемый пост)
динамических массивов вообще не бывает в природе

Это понятно. Я имел ввиду средства языка для более простого добавления элемента в массив.
З.Ы. 
Цитата(mr.DUDA @  14.2.2007,  13:09 Найти цитируемый пост)
Utils.CopyArray

Че-то я не нашел такого, есть два internal класса Utils, но ни у одного из них нет метода CopyArray.
З.З.Ы Рефлектор не лучший способ узнать средства языка. Он отображает только логику. С синтаксисом есть небольшие недочеты. Встречали ли вы в коде сгенерированном рефлектором циклы while, for. И еще, это конечно мелочи, но, например, строки
Код

(System.IntPtr)0;
//и
System.IntPtr.Zero;

образуют разный IL-код, а в рефлекторе обе выглядят как System.IntPtrZero.
(Все вышесказанное относится только к Lutz Roeder's .NET Reflector)



--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
-Mikle-
Дата 14.2.2007, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 17
Всего: 59



Array.Copy(....);


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
Naum
Дата 14.2.2007, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 8
Всего: 15



-Mikle-, BR.


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
marcusmae
Дата 14.2.2007, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 22
Всего: 39



Цитата

Раньше я писал на Delphi И там были динамические масивы и любой размерности
(Mas: Array of Array of Integer)
А как токае сделать в C#?


WaReZMEN, мнений об ответах Вы не помещали, а ведь несовсем понятно, правильно ли поняли Ваш вопрос.

Помнится, 8 лет назад, когда занимались Pascal'ем и Fortran'ом, заходила речь о динамических переменных, и под этим понималась обычно динамическая инициализация с помощью new, dispose, alloc и т.п.

Цитата(mr.DUDA @  14.2.2007,  12:09 Найти цитируемый пост)
А динамических массивов вообще не бывает в природе

Код

LOGICAL l
ALLOCATABLE l(:,:,:)
! l is a 3-dimensional, allocatable, deferred shape logical array.

- динамический массив (с) Бартеньев  smile
эквивалентом будет
Код

bool[][][] l;


В этом смысле, C#-ная инициализация почти всюду динамическая, за исключением интегральных типов.

А если хотите pointer^ на Array of Array of Integer, то на C# указатели доступны только в режиме unsafe.

Это сообщение отредактировал(а) marcusmae - 14.2.2007, 15:50


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
-Mikle-
Дата 14.2.2007, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 17
Всего: 59



[OFFTOP]
Цитата(Naum @  14.2.2007,  16:57 Найти цитируемый пост)
-Mikle-, BR.

сори, как это понять?  smile 

[/OFFTOP]


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
Naum
Дата 14.2.2007, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 8
Всего: 15



 smile Спасибо.


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
Idsa
Дата 14.2.2007, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



А все-таки мне кажется, что автору нужно что-то вроде предложенного мной... Это, конечно, не массив, а коллекция, но функционал очень схож с дельфийскими динамическими массивами.
Цитата(mr.DUDA @  14.2.2007,  12:09 Найти цитируемый пост)
А динамических массивов вообще не бывает в природе

Поясни, пожалуйста.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Exception
Дата 14.2.2007, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



А что тут пояснять smile ? Так уж устроен в памяти массив, что у него фиксированный размер.
PM   Вверх
Idsa
Дата 14.2.2007, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



Цитата(Exception @  14.2.2007,  19:35 Найти цитируемый пост)
А что тут пояснять  ? Так уж устроен в памяти массив, что у него фиксированный размер.

Массив - это, в первую очередь, набор однотипных данных. А уж как он организован, вопрос открытый. Почему бы и не организовать массив, как коллекции, выделяя память динамически. Ну в конце концов, динамические массивы Delphi - это не массивы что ли?


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
-Mikle-
Дата 14.2.2007, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 17
Всего: 59



Цитата(Idsa @  14.2.2007,  22:55 Найти цитируемый пост)
Ну в конце концов, динамические массивы Delphi - это не массивы что ли?


В языках высокого уровня, такие вещи типа выделения памяти скрываются от программиста. Но все равно, на низком уровне это так все и выглядит. Ну не может "набор однотипных данных" выделить просто дополнительную память! Как? А вдруг за ним еще какие-то данные расположены? Поэтому при изменении размера массива, нужно выделить новое место в памяти, и туда скопировать данные из старого. А понятие динамический массив существует только в рамках языков высокого уровня и за собой скрывает реализацию выделенния новой памяти.

В С# есть классы, которые тоже скрывают истинную сущность динамического выделения памяти. Тот же ArrayList внутри себя хранит массив, размером свойства Capacity. А когда массив заполнится, происходит выделение новой памяти с копированием туда данных из старого места. Таким образом прогрммист просто добавляет данные в коллекцию, и не задумывается о выделении новой памяти.


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
Закрытая темаСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0649 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.