Вызвать переменную из другого класса
Всем доброго. Пытаюсь программировать на С#, но уперся уже несколько дней — не могу вызвать переменную из другого («а») из другого класса («Class1′).
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 < class Program < static void Main(string[] args) < new Class1(); double b = Class1.a; Console.WriteLine("a = ", b); while (true) < try < string command = Console.ReadLine(); if (command == "stop") < break; >> catch (System.Runtime.InteropServices.COMException) < >> > > >
Класс, от которого надо взять значение переменной «а» максимально упрощен
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 < public class Class1 < public double a = 179; >>
Пробовал гуглить, яндексить и т. д. — не помогло.
Как вызвать переменную или метод другого класса через строку?
У меня есть множество классов (Страны) с одинаковыми названиями переменных. И есть другой класс который выводит информацию об этих классах. Сейчас пользуюсь таким методом: При вызове инфо класса страна передает ему свое имя через строку а в инфо классе уже делаю.
void Info(string Country) < if(Country == "Italy")< Text.text = Italy.NameOfVariable; >else if(Country == "Russia") < Text.text = Russia.NameOfVariable; >>
Но так как классов много будет очень много лишнего кода, скажите как можно использовать универсальный метод чтобы брать переменную, если это возможно, может быть и не через строку.
- Вопрос задан более трёх лет назад
- 2661 просмотр
Комментировать
Решения вопроса 1

Denis Gaydak @MrMureno Куратор тега Unity
VR for all
ответьте почему у вас множество классов, а не один класс Country, на основе которого сделали себе объект для России и Италии и так далее?
у них у всех будет одинаковые переменные..
public class Country < public string Name; //и другие нужные поля под страну >/////////// //создаем себе объект класса Country russia = new Country(); russia.Name = "Russia"; ////////// //и вот собственно во все инфо и подобное отдаете объект класса Country //в котором все содержиться void Info(Country currentCountry)
конечно еще есть struct вместо класса. и про наследование можно поговорить если будет что то уникальное для каких-то стран.
но вам еще видимо рано такое..
но в общем то, если сильно все упростить, вы просто не использовали ООП — создав на каждую страну свой собственный класс.
Доступ к переменной из другого класса

Доступ к ui из другого класса
Добрый день! Отупел в край, выручайте)) Пролапатил кучу тем, все вода и срач. Вообщем есть форма.

Доступ к ui из другого класса
Доброй ночи. Ребята, данные вопросы уже поднимались на форуме. Подобные темы не помогли. Вопрос.
Доступ к объекту ui из другого класса
Всем привет! Из другого класса необходимо обратиться к объекту ui (textEdit) и что-нибудь вывести.
Доступ к методу другого класса
здравствуйте как можно вызвать метод класса из другого класса пример qw.h #ifndef QW_H #define.
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
Делай в MainWindow указатель на settingplay, через него получай доступ к членам settingplay.
Поклонник Qt
314 / 210 / 41
Регистрация: 09.11.2013
Сообщений: 336
Записей в блоге: 1
Сообщение от lss 
Делай в MainWindow указатель на settingplay, через него получай доступ к членам settingplay.
В данном случае, рекомендую всё же ограничиться ссылками.
1 2 3 4
void MainWindow::value(int& i) { i = 123; }
Указатели желательно использовать как можно реже.
127 / 105 / 27
Регистрация: 25.02.2010
Сообщений: 451
fahrenheit, Вы же уже создавали подобную тему, и Вам предлагали разные варианты.
Вкратце.
В классе settingplay, переменная должна быть закрытым членом класса, и делаете 2 метода на получение и на изменение.
В классе MainWindow, у Вас наверняка уже есть указатель на объект этого класса, или сам объект. И через него вызываете метод на получение, и присваиваете его локальной переменной, после чего работаете.
Регистрация: 13.01.2015
Сообщений: 54
а как сделать методы получения и изменения? С указателями еще ничего не делал.
И это..
public slots: void tray();
Надо сделать так?
private slots: void tray();
Поклонник Qt
314 / 210 / 41
Регистрация: 09.11.2013
Сообщений: 336
Записей в блоге: 1
Сообщение от fahrenheit 
Надо сделать так?
Если метод требуется для реализации внутренних механизмов класса и обращаться из вне к нему не требуется, делаем его — приватным.
Сообщение от fahrenheit 
а как сделать методы получения и изменения?
1 2 3 4 5 6 7 8 9 10 11
private: int variable; public: inline int getVariable() const { return variable; } inline void setVariable(int value) { variable = value; }
Регистрация: 13.01.2015
Сообщений: 54
Ну мне нужно из метода одного класса, взять значение переменной, и передать ее в метод другого класса.
Добавлено через 1 час 4 минуты
И как сделать указатель на класс?
127 / 105 / 27
Регистрация: 25.02.2010
Сообщений: 451
fahrenheit, как Вы вызываете класс settingpay?
Регистрация: 13.01.2015
Сообщений: 54
1 2 3 4 5 6 7
void MainWindow::playsetting() { settingplay splay; splay.setModal(true); splay.exec(); }
127 / 105 / 27
Регистрация: 25.02.2010
Сообщений: 451

Сообщение было отмечено fahrenheit как решение
Решение
Сообщение от fahrenheit 
И как сделать указатель на класс?
settingplay *splay = new settingplay(this);
На мой взгляд, лучше вынести объявление объекта куда нибудь в конструктор, чтобы splay был виден из любого метода.
Затем, при условии:
settingplay.h
1 2 3
public: int getValue() const; void setValue (int);
settingplay.cpp
1 2 3 4 5 6 7 8 9
int settingplay::getValue() { return a; } void settingplay::setValue(int value) { a = value; }
делаете
mainwindow.cpp
1 2 3 4 5 6 7 8 9 10 11
MainWindow::MainWindow(. ) { . settingplay splay; . } void MainWindow::value() { int myValue = splay.getValue(); }
Это исходя из Вашего текущего проекта.
Но я бы сделал так:
settinplay.h
1 2 3 4
private: int myValue; signals: signalNewValue(int); // создаем сигнал, который будем испускать при изменении переменной
settingplay.cpp
1 2 3 4 5 6 7 8 9
void settingplay::tray() { if(play->isChecked()) { myValue = 1; emit signalNewValue(myValue); } }
mainwindow.h
1 2 3 4 5 6
private: settingplay *splay; int myNewValue; private slots: void slotSetNewValue(int);
mainwindow.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
MainWindow::MainWindow(. ) // Ваш констурктор { myNewValue = 0; . splay = new settingplay(this); connect (splay, &settingplay::signalNewValue, this, &MainWindow::slotSetNewValue); // соединяем сигнал о новом значении со слотом . } void MainWindow::slotSetNewValue(int i) { myNewValue = i; // при испускании сигнала будет вызываться данный метод, который присваевает новое значение внутренней переменной } // и затем мы можем с ней работать в любом методе void MainWindow::value() { //тут делаем нужные вещи. // а можно прям в слоте и делать, и этот метод убрать }
Как использовать переменную из другого класса java
Если переменная объявлена public , то мы можем получить к ней доступ напрямую, указав имя через точку после имени объекта класса.
Если переменная объявлена private , то необходимо вызвать геттер этой переменной.
class Friend public String name; private String mail; public Friend(String name, String mail) this.name = name; this.mail = mail; > public String getMail() return mail; > > public class App public static void main(String[] args) Friend friend = new Friend("Ivan", "Ivan@mail.ru"); System.out.println(friend.name); // => Ivan System.out.println(friend.getMail()); // => Ivan@mail.ru > >