Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 3
1

Как правильно "вызвать" масив из другого класса чтобы увидеть значения элементов

30.09.2015, 19:25. Показов 1087. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть 2 разных namespace, в каждом их них по классу. В первом классе есть массив с элементами, как грамотно вызвать этот масив в другом классе чтобы работать с ним.
Например у меня примерно сейчас так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
namespace One
{
      public class A
      {
            public string[] Array = new String[3];
 
            public void ToDO()
            {
                  Array[0]="abc";
                  Array[1]="def";
                  Array[2]="zzz";
            }
            //допустим тут еще куча когда где вызывается ToDO() в котором присваиваем значения элементов масива
      }
}
 
namespace Two
{
      public class B
      {
            public void GetArray()
            {
                  A classA = new A();
                  if((classA.Array[0]).Equals("abc")) //вот тут значение classA.Array[0] отображаеться как null
                  {
                       Console.WriteLn("True");
                  }
            }
      }
}
но почему-то когда вызваю масив из класа А, в классе Б все значения показываются как null.
ps: так как нет опции редактировать переписал пост в этом сообщении
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.09.2015, 19:25
Ответы с готовыми решениями:

Как создать метод, чтобы его можно было бы вызвать из другого класса?
Как создать метод, чтобы его можно было бы вызвать из другого класса? Создаю в Form1.cs метод для...

Как из одного класса вызвать функцию другого класса
Добрый день. Подскажите пож. как из одного класса вызвать функцию другого класса. // file1.h...

Как правильно вызвать метод класса внутри самого класса?
Здравствуйте. Собственно тема прописана в заголовке: как правильно вызвать метод класса внутри...

Как вызвать метод из другого класса
Есть класс Player, в нем есть метод "Shoot", как из него вызвать метод BCheck из класса...

Как вызвать метод из другого класса?
using System; using System.Collections.Generic; using System.Linq; using System.Text; using...

6
Эксперт .NET
6452 / 4053 / 1599
Регистрация: 09.05.2015
Сообщений: 9,487
30.09.2015, 19:29 2
null потому что вы значения присваиваете в методе ToDO(), который нигде не вызывается.
0
38 / 38 / 30
Регистрация: 07.04.2014
Сообщений: 219
30.09.2015, 19:32 3
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
namespace ConsoleApplication1
{
      public class A
      {
            public string[] Array = new String[3];
 
            public void ToDO()
            {
                  Array[0]="abc";
                  Array[1]="def";
                  Array[2]="zzz";
            }
            //допустим тут еще куча когда где вызывается ToDO() в котором присваиваем значения масиву
      }
}
 
namespace Two
{
      public class B
      {
            public void GetArray()
            {
                  ConsoleApplication1.A classA = new ConsoleApplication1.A();
                  
                classA.ToDO();
 
                  if(classA.Array[0].Equals("abc"))
                  {
                       Console.WriteLine("true");
                  }
            }
      }
}
0
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 3
30.09.2015, 20:01  [ТС] 4
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
namespace ConsoleApplication1
{
      public class A
      {
            public string[] Array = new String[3];
 
            public void ToDO()
            {
                  Array[0]="abc";
                  Array[1]="def";
                  Array[2]="zzz";
            }
            //допустим тут еще куча когда где вызывается ToDO() в котором присваиваем значения масиву
      }
}
 
namespace Two
{
      public class B
      {
            public void GetArray()
            {
                  ConsoleApplication1.A classA = new ConsoleApplication1.A();
                  
                classA.ToDO();
 
                  if(classA.Array[0].Equals("abc"))
                  {
                       Console.WriteLine("true");
                  }
            }
      }
}
Есть какой-нибудь пругой путь? Дело в том, что это только пример, в моем реальном случае метод ToDo() состоит из ~200 строк кода которые никак нельзя разбить (такое требование). И вызывать метод ToDo() в строке 25 никак не могу чтобы все что в нутри ToDo() не выполнялось по второму кругу. Я поэтому и пытаюсь просто взять значение из Array[0]
0
38 / 38 / 30
Регистрация: 07.04.2014
Сообщений: 219
30.09.2015, 20:06 5
Лучший ответ Сообщение было отмечено tech88 как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
namespace ConsoleApplication1
{
      public class A
      {
            public string[] Array = new String[3];
            public void Do()
            {
                  Array[0] = "abc";
            }
            public void ToDO()
            {
                  Array[1]="def";
                  Array[2]="zzz";
            }
            //допустим тут еще куча когда где вызывается ToDO() в котором присваиваем значения масиву
      }
}
 
namespace Two
{
      public class B
      {
            public void GetArray()
            {
                  ConsoleApplication1.A classA = new ConsoleApplication1.A();
                  
                classA.DO();
 
                  if(classA.Array[0].Equals("abc"))
                  {
                       Console.WriteLine("true");
                  }
            }
      }
}
1
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
30.09.2015, 20:38 6
Лучший ответ Сообщение было отмечено tech88 как решение

Решение

tech88,
так как массив является полем класса A, то при создании в классе B объекта класса A, массив придется заполнять заново. Т.е. в любом случае придется вызывать метод ToDo.
1
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 3
01.10.2015, 15:49  [ТС] 7
Понял, всем спасибо
0
01.10.2015, 15:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.10.2015, 15:49
Помогаю со студенческими работами здесь

Как вызвать updateGL() из другого класса?
Есть два класса Draw(наследует от QGLWidget) и Calc(наследует QWidget) в разных файлах. Создал...

Как вызвать форму из другого класса
Т.е. есть один класс, в нем Myform mf = new Myform(); ... А в другом классе я хочу скажем...

Как вызвать конструктор другого класса?
Есть главное JFrame и при нажатии на кнопку должен вызваться диалог. Нашел пример в интернетах, но...

Как вызвать обработчик события из другого класса?
Допустим есть проект, состоящий из: Window1.xaml Window1.xaml.cs App.xaml App.xaml.cs В...

Как вызвать в Main метод из другого класса?
Задачка на среднее арифметическое. Создал класс "Array", в котором происходит заполнение массива...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru