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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> передача заполненного массива 
:(
    Опции темы
Legolas
Дата 19.3.2008, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Есть два класса, которые поочередно работают со строковым массивом: один заполняет его допустим наполовину, второй к этой половине добавляет еще пару элементов и т.д. Вопрос: как передать частично заполненный массив между классами? Можно ли создать один массив с поддержкой сразу в двух классах? 
PM MAIL   Вверх
vponomarov
Дата 19.3.2008, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



масив является объектом ссылочного типа так, что безболезненно можно написать:
Код

class C1
{
        public string[] a;
}

class C2
{
       public string[] b;
}
....
C2.b=C1.a;

пример конечно упрощен (так что сильно не пинать smile), но смысл надеюсь понятен.

З.Ы. возможно неправильно понял условия. возможно имлся в виду тип Array. но смысл от этого не меняется.


--------------------
user posted image
user posted image
PM MAIL ICQ   Вверх
Legolas
Дата 19.3.2008, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



vponomarov, я так в принципе и делал, но что-то не получается... создается новый массив - пустой. Сейчас еще раз проверю, может где заново его инициализировал случайно...

Добавил:
Кстати, а где в таком случае задавать размеры обоих массивов - без инициализации выскакивает ошибочка...
Код

class A
{
string[] buffer  = new string[16]; ---------------------------????????? новый экземпляр - пустой, но как задать размерность и прогнать через цикл?
        public void processor(string proc_info)
        {            
            for (int i = 0; i < buffer.Length; i++)
            {
                if (buffer[15] != null)
                {
                    break;
                }
                         }
}

class B
{
string [] buffer2 = new string[16] -------------????????????? получаю пустой
}



Добавил еще:
К тому же так писать не получится - 
Код

C2.b=C1.a;


нужно создавать отдельный экземпляр класса - 
Код

class B
{
C1 a = new C1();
C1.a = b;
}

а таким образом обнуляется всё в классе.

Это сообщение отредактировал(а) Legolas - 20.3.2008, 00:06
PM MAIL   Вверх
Voyager
Дата 20.3.2008, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Используй экземпляры классов вне классов (как поля, надеюсь доступно выразился). smile

Код


A FA;
B FB;

...
FA = new A(); // и заполняешь массив buffer
FB = new B();
FB.buffer2 = FA.buffer;


Думаю суть ясна
PM   Вверх
vponomarov
Дата 20.3.2008, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

class A
{
public string[] buffer  = new string[16]; ---------------------------????????? новый экземпляр - пустой, но как задать размерность и прогнать через цикл?
        public void processor(string proc_info)
        {            
            for (int i = 0; i < buffer.Length; i++)
            {
                if (buffer[15] != null)
                {
                    break;
                }
                         }
}

class B
{
string [] buffer2;
public B(A src)
{
     buffer2=src.buffer;
}
}



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

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


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

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


 




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


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

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