Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2010, 21:57   #1
musomoh
Пользователь
 
Регистрация: 17.08.2009
Сообщений: 11
По умолчанию ArrayList

Добрый день, повелители кода! Такой затык: надо объявить несколько массивов переменной длины, сколько их будет - решается во время выполнения программы. Если делать так:
Код:
  for (int i = 0; i < max; i++)
   {
        ArrayList "arr_" + i.ToString();
    }
компилятор ругается, что, мол, ожидалось ";", учи синтаксис.
Если:
Код:
   string name = "";
   for (int i = 0; i < max; i++)
   {
        name = "arr_" + i.ToString;
        ArrayList name;
    }
то компилятор говорит, что, мол, баран, у тебя же name уже объявлена как строка, нельзя это имя использовать для ArrayList.
Можно, конечно, для каждого i создавать свой класс, передавая i как параметр, сделать i характеристикой класса и по этой характеристике искать потом нужный класс и передавать данные туда-сюда. Как-то это всё длинно получается... Не может быть, чтобы не было простого пути... Или может? Ведь жили же люди когда-то в "безклассовом" обществе, т.е. коде))). "Иль это сказка тупой, бессмысленной толпы, и не был убийцею создатель Ватикана"?
Короче: как объяснить компилятору, что name - это не строка, а имя массива? Может, кто-нибудь знает? Тока не надо объявлять всё возможное колличество массивов заранее))).

Последний раз редактировалось Stilet; 06.05.2010 в 11:52.
musomoh вне форума Ответить с цитированием
Старый 05.05.2010, 22:02   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Двумерный массив ?
1й индекс идет как индекс массива в массиве
2й индекс идет как индекс какого то массива
Выделять динамически через оператор new с указанием типа нужного, а так же и размера (размеры соответственно могут быть различны)
Размер массива, для 1го индекса, должен быть видимо max
BOBAH13 вне форума Ответить с цитированием
Старый 06.05.2010, 11:34   #3
musomoh
Пользователь
 
Регистрация: 17.08.2009
Сообщений: 11
По умолчанию

Дело не в этом, а в том, что в любом случае я пытаюсь неявно преобразовать тип string в ArrayList. Конечно, это как раз то, для чего служит ООП. Как говорил Шнур: "Ты чё! Ради этого слова вся песня написана". Но всё-таки...
musomoh вне форума Ответить с цитированием
Старый 06.05.2010, 14:11   #4
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,378
По умолчанию

Цитата:
Сообщение от musomoh Посмотреть сообщение
я пытаюсь неявно преобразовать тип string в ArrayList.
Ой ли? Неявно преобразовать string в ArrayList - это
Код:
String str = "aaaaa";
ArrayList arr = new ArrayList();
arr = str;
(работать не будет)
А вы пытаетесь из строки сделать имя переменной, что не есть одно и тоже.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 07.05.2010, 17:30   #5
musomoh
Пользователь
 
Регистрация: 17.08.2009
Сообщений: 11
По умолчанию

Вот это да!!! Бегемот бы сказал: "Королева в восхищении!" А Л.О.Утёсов сразу бы запел:

Как много девушек хороших
Толпой на подиум бегут,
Но лишь одна из них прекрасна,
Её ACE Valery зовут. И она - тут...

Готов слушать Ваши советы по любой тематике!
musomoh вне форума Ответить с цитированием
Старый 07.05.2010, 18:46   #6
akasex
Форумчанин Подтвердите свой е-майл
 
Аватар для akasex
 
Регистрация: 31.03.2008
Сообщений: 179
По умолчанию

романтег ???
akasex вне форума Ответить с цитированием
Старый 08.05.2010, 01:07   #7
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,378
По умолчанию

musomoh
Если это сарказм, то весьма неудачный.
Если вам надо решить проблему, то BOBAH13 посоветовал вам единственно верный способ.
Если вы хотите решить задачу именно вашим способом, пытаясь из строки сделать имя переменной, то РНР вам в помощь. Насколько я знаю, там это можно замудрить...

Но опять же: все, что объявлено после открывающей фигурной скобочки исчезнет при появлении закрывающей фигурной скобочки
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 08.05.2010, 01:24   #8
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

ммммм. может так?
Код:
class Program
    {
        static private Hashtable arrays;

        static void Main(string[] args)
        {

            arrays = new Hashtable();

            for (int i = 0; i < 10; ++i)
            {
                arrays.Add( "arr_" + i.ToString(), new ArrayList() );
            }

            ((ArrayList)arrays["arr_0"]).Add(0);
            ((ArrayList)arrays["arr_1"]).Add(1);
            ((ArrayList)arrays["arr_2"]).Add(2);
        }
    }
или так...
Код:
class Program
    {
        static private SortedDictionary< string, ArrayList > arrays;

        static void Main(string[] args)
        {
            arrays = new SortedDictionary<string, ArrayList>();

            for (int i = 0; i < 10; ++i)
            {
                arrays.Add( "arr_" + i.ToString(), new ArrayList() );
            }

            arrays["arr_0"].Add(0);
            arrays["arr_1"].Add(1);
            arrays["arr_2"].Add(2);
        }
    }

Последний раз редактировалось Carbon; 08.05.2010 в 01:28.
Carbon вне форума Ответить с цитированием
Старый 10.05.2010, 10:42   #9
musomoh
Пользователь
 
Регистрация: 17.08.2009
Сообщений: 11
По умолчанию

Большое спасибо всем, особенно - Carbon-у. Вопрос решён.

Special for ACE Valery. Ну зачем сразу подозревать человека в чём-то плохом? Просто я читал, что программеры на С - это такие задумчивые бородатые дядьки. А тут - бац! - и разбился стереотип.

using System;
namespace WhiteEagle
{
class Refrain
{
static void Main()
{
Console.Write("\n");
for (int i = 0; i < 3; i++)
{
Console.Write(" Потому что нельзя");
if (i < 2){Console.Write(",\n");}
else{Console.Write("\n");}
}
Console.WriteLine(" Быть на свете красивой такой.");
Console.ReadLine();
}
}
}
musomoh вне форума Ответить с цитированием
Старый 11.05.2010, 02:03   #10
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Цитата:
Сообщение от musomoh Посмотреть сообщение
Просто я читал, что программеры на С - это такие задумчивые бородатые дядьки. А тут - бац! - и разбился стереотип.
И хде ж такое написано?
Я, например, не бородатый.
Carbon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ArrayList jona Общие вопросы по Java, Java SE, Kotlin 7 30.04.2010 13:45
arraylist WOWka777 Общие вопросы .NET 4 11.04.2010 19:05
Проблема С ArrayList в C# , ОЧЕНЬ надо Алексей Равен Помощь студентам 1 24.04.2009 21:25