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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача массива из одного класса в другой, Самый оптимальный и правильный способ 
:(
    Опции темы
mrHunter
Дата 29.5.2008, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть Класс1 в нем производятся предварительные вычисления и заполняются 5 массивов с параметрами. (Массивы заполняются именно в этом классе).

Эти 5 массивов активно используются в Классе2.

Так вот вопрос, как наиболее правильно с точки зрения стиля программирования и оптимально передать эти массивы в Класс2?

Можно, конечно объявить их в классе2 как public, но это наверное не есть гуд, т.к. плохой стиль программирования.
Создать свойства тоже конечно можно, но в случае массивов я не знаю, правильно ли это?

Читал про индексаторы... Я понял как сделать 1 индексатор в классе, а как их сделать 5 шт?

Подскажите пожалуйста.
PM MAIL   Вверх
-Mikle-
Дата 29.5.2008, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(mrHunter @  29.5.2008,  21:37 Найти цитируемый пост)
Так вот вопрос, как наиболее правильно с точки зрения стиля программирования и оптимально передать эти массивы в Класс2?

Все зависит от задачи, и как массивы используются. Вообще частая ошибка, это излишнее деление кода на классы. Делить конечно надо, но разумно. Просто у меня возникло такое замечание из-за того, что массивы заполняются в одном классе, а используются в другом. Как то смущает меня немного это... Зотя может для решения твоей задачи именно так и нужно... 

Ок, по сути вопроса...
Цитата(mrHunter @  29.5.2008,  21:37 Найти цитируемый пост)
Создать свойства тоже конечно можно, но в случае массивов я не знаю, правильно ли это?

А почему нет? Нет ничего плохого в том, что свойство будет иметь тип массив строк, например. Это абсолютно нормально.
Код

string[] _params;
public string[] Params { get { return _params; } }


Если допустимо в твоей задаче (я не знаю логики взаимодействия между классами в твоей задаче), то можно в Класс2 передавать ссылку на Класс1.

Если не допустимо, то, возможно, тебе будет удобнее вынести эти пять массивов в отдельный класс и использовать его в Класс1 и в Класс2. Это даст большую гибкость в будущем расширении взаимодействия между Класс1 и Класс2.

Еще раз повотрюсь, "красивое" решение зависит от конкретной задачи в целом.

Добавлено через 2 минуты и 22 секунды
Цитата(mrHunter @  29.5.2008,  21:37 Найти цитируемый пост)
Читал про индексаторы... Я понял как сделать 1 индексатор в классе, а как их сделать 5 шт?

5-ть не сделаешь никак. Только одно разумеется.


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


Новичок



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

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



Спасибо, -Mikle-!

Массивы заполняются в Классе1, т.к. это класс - форма приложения. А в Классе2 содержатся общие для всей программы поля и методы.

Насчет свойств:

И в Классе1 и в Классе2 надо создавать

Код

private static int[] array1;


В Классе2 надо создать свойство:
public static Array1
{
  set { array1 = value; }
}

В Классе1 после заполнения массива:

Код

Класс2.Array1 = array1;


Меня просто смущает, что так много кода...
PM MAIL   Вверх
-Mikle-
Дата 29.5.2008, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(mrHunter @  29.5.2008,  23:05 Найти цитируемый пост)
Массивы заполняются в Классе1, т.к. это класс - форма приложения. А в Классе2 содержатся общие для всей программы поля и методы.

ясно теперь.

Кода не много. Вот так будет нормально:

Код

static class Класс2
{
    static int[] array1;
    public static int[] Array1
    {
        get { return array1; }
        set { array1 = value; }
    }
}


а в форме писать:
Код

Класс2.Array1 = new int[99];



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

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


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

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


 




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


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

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