0 / 0 / 0
Регистрация: 07.09.2018
Сообщений: 6
1
.NET 4.x

Как создать метод с использованием объекта другого метода, который определен в другом классе

14.09.2018, 21:05. Показов 4614. Ответов 8

В общем суть вот в чем:
У меня есть 2 класса. 1 основный(Program) в нем в методе Main создается объект метода из 2-го класса. И в этом методе я должен использовать объект, созданный в 1-ом классе. Но не получается, так как класс его не видит, а создавать новый - не решение проблемы. Мне бы хотелось вызывать все побочные методы находящиеся в других классах в основном классе Pogram.

Это основной класс
C#
1
2
3
4
        static void Main(string[] args)
        {
            PhoneBook book = new PhoneBook();            
        }
Это метод из 2-ого класса
C#
1
2
3
4
5
6
7
8
public void CreateNewMember()
        {
            Console.Write("\nPlease, enter name of new member: ");
            string name = Console.ReadLine();
            Console.Write("\nPlease, enter phone of new member: ");
            int phone = Int32.Parse(Console.ReadLine());
            book.AddMember(name, phone);
        }
Собственно мне нужно в этом методе использовать объект book, который создан в Program, как мне это сделать или есть другие способы заставить то работать?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.09.2018, 21:05
Ответы с готовыми решениями:

Создание объекта в другом классе с последующем использованием в методах другого класса
Здравствуйте! Заранее спасибо! Помогите пожалуйста разобраться в следующей ситуации. Имеется у...

Нужно вызвать через сторонний метод(в другом классе,который в другом файле) метод в форме
public void Print_Inform(int numb1,int znak,int numb2) { switch(znak) { case 1:...

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

Почему если делегат события определен в другом классе, то не получается создать генерацию события?
В проекте №1 объявлен делегат для события: delegate void StateEventHandler(State state); А в...

8
Модератор
Эксперт .NET
13528 / 9778 / 2618
Регистрация: 21.04.2018
Сообщений: 29,068
Записей в блоге: 2
14.09.2018, 21:25 2
Цитата Сообщение от DD7 Посмотреть сообщение
В общем суть ....
Суть непонятно объяснена.
Вариант если правильно понял.
У Вас 2 метода в классе Program. Методы: Main и CreateNewMember. Объект book Вы создаёте в методе Main и, соответственно, в методе CreateNewMember этот объект невидим.
Если так, то это ошибка в организации методов и данных.
Для этого и существуют модификаторы доступности. Именно они регулируют, чтобы вместо общей свалки всех переменных методов были отдельные кучки, в которых можно разобраться.
Так как доступ к объекту book Вам нужен из нескольких методов, то этот объект лучше объявить уровнем выше в классе Program. А в методе Main, если надо - провести его инициализацию.
0
TheGreatCornholio
1249 / 727 / 285
Регистрация: 30.07.2015
Сообщений: 2,403
14.09.2018, 21:29 3
Цитата Сообщение от DD7 Посмотреть сообщение
И в этом методе я должен использовать объект, созданный в 1-ом классе
Так в чем проблема этот объект передать в метод как параметр?
0
Модератор
Эксперт .NET
13528 / 9778 / 2618
Регистрация: 21.04.2018
Сообщений: 29,068
Записей в блоге: 2
14.09.2018, 21:29 4
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Program
    {
            PhoneBook book;            
            static void Main(string[] args)
           {
                  book = new PhoneBook();            
            }
         public void CreateNewMember()
        {
            Console.Write("\nPlease, enter name of new member: ");
            string name = Console.ReadLine();
            Console.Write("\nPlease, enter phone of new member: ");
            int phone = Int32.Parse(Console.ReadLine());
            book.AddMember(name, phone);
        }
}
0
TheGreatCornholio
1249 / 727 / 285
Регистрация: 30.07.2015
Сообщений: 2,403
14.09.2018, 21:30 5
Элд Хасп,
Цитата Сообщение от DD7 Посмотреть сообщение
У меня есть 2 класса
0
Модератор
Эксперт .NET
13528 / 9778 / 2618
Регистрация: 21.04.2018
Сообщений: 29,068
Записей в блоге: 2
14.09.2018, 21:33 6
Цитата Сообщение от Woldemar89 Посмотреть сообщение
Элд Хасп,
Сообщение от DD7
У меня есть 2 класса
НЭту у него двух, ну нэту..
Он, наверное, имеет ввиду класс Program и класс PhoneBook.
0
0 / 0 / 0
Регистрация: 07.09.2018
Сообщений: 6
14.09.2018, 21:55  [ТС] 7
В классе Program создан объект класса PhoneBook, собственно book.
И я бы хотел использовать его в этом-же классе PhoneBook в другом методе. Но не могу так как пишет что имя book не существует в данном контексте.

C#
1
2
3
4
5
6
7
8
public void CreateNewMember()
        {
            Console.Write("\nPlease, enter name of new member: ");
            string name = Console.ReadLine();
            Console.Write("\nPlease, enter phone of new member: ");
            int phone = Int32.Parse(Console.ReadLine());
            book.AddMember(name, phone);
        }
book.AddMember

Добавлено через 12 минут
Цитата Сообщение от Элд Хасп Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Program
    {
            PhoneBook book;            
            static void Main(string[] args)
           {
                  book = new PhoneBook();            
            }
         public void CreateNewMember()
        {
            Console.Write("\nPlease, enter name of new member: ");
            string name = Console.ReadLine();
            Console.Write("\nPlease, enter phone of new member: ");
            int phone = Int32.Parse(Console.ReadLine());
            book.AddMember(name, phone);
        }
}
Почти то что надо, но метод CreateNewMember у меня находится в другом классе.
0
Модератор
Эксперт .NET
13528 / 9778 / 2618
Регистрация: 21.04.2018
Сообщений: 29,068
Записей в блоге: 2
14.09.2018, 22:21 8
Лучший ответ Сообщение было отмечено DD7 как решение

Решение

Цитата Сообщение от DD7 Посмотреть сообщение
В классе Program создан объект класса PhoneBook, собственно book.
И я бы хотел использовать его в этом-же классе PhoneBook в другом методе. Но не могу так как пишет что имя book не существует в данном контексте.
Совсем не понятно. Вы различаете классы и объекты? book - это объект, а не класс! И где Вы хотите его использовать? В коде самого класса, которым создан этот объект? Вы сами задумайтесь что Вы хотите.
Класс это программа-код. Объект - это данные. Вот Вы пишите в редакторе код класса, в это же время объект же не создан, его не существует. Как Вы хотите обратиться к тому чего ещё нет?
Вы можете обращаться из одного объекта к другому, так как они создаются при исполнении программы.
Переосмыслите всё это и объясните толково что же Вам надо. Не путая понятия объект и класс.

Добавлено через 12 минут
Попробую разобраться, что Вам нужно.
  • В классе PhoneBook у Вас есть список с именами и телефонами.
  • Список пополняется методом AddMember
  • Для получения данных с консоли создан метод CreateNewMember
  • Во-первых, в методе CreateNewMember для ввода разных данных Вы используете один и тот же текст приглашения на английском. Поменяйте его на русский и по существу.
  • Второе, как у Вас организован метод AddMember? От его организации и зависит, как его вызывать в существующем объекте. Вы случайно не объявили его статическим? Если он объявлен у Вас просто public void AddMember(string name, string phone), то его надо вызывать без ссылок на объект - просто AddMember(name, phone)
1
0 / 0 / 0
Регистрация: 07.09.2018
Сообщений: 6
14.09.2018, 23:07  [ТС] 9
Спасибо, вся суть была именно в этом
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Если он объявлен у Вас просто public void AddMember(string name, string phone), то его надо вызывать без ссылок на объект - просто AddMember(name, phone)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.09.2018, 23:07
Помогаю со студенческими работами здесь

Как в классе Thread реализован вызов run(), если метод run() определён в АВТОРСКОМ классе?
И, следовательно, в классе Thread ничего не известно о вызове run? То есть, ребята, мне пришла в...

Как сделать в ячейке выбор из диапазона, который определен в другом месте?
Привет, забыл как сделать в ячейке выбор из диапазона, который определен в другом месте....

Вызов метода объекта внутри определения метода другого объекта(вложенные классы)
Как мне вызвать метод объекта slider класса Slider внутри определения метода объекта класса...

В классе OnlyData написать метод, который выводит значение переменной i и вызвать этот метод в том же классе
Я конечно понимаю, что задача оч простая, но все же. В классе OnlyData нужно написать метод,...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru