Вызов переменной из другого класса
Как я могу получить доступ к переменной в одном общедоступном классе из другого общедоступного класса в C #?
Мне нужно позвонить из:
Заранее спасибо за помощь.
Я работаю в консольном приложении.
задан 08 сен ’09, 01:09
4 ответы
Это было бы просто:
и он также должен быть общедоступным:
Я пробовал это и получаю: Variables.name недоступен из-за уровня защиты — user96377
Вы уверены, что добавили модификатор public. — Натан В
Когда я ответил, я почему-то не увидел добавленный вами модификатор public. Да, сработало. Большое спасибо 🙂 — user96377
Я получаю ссылку на объект, которая требуется для нестатического поля. — Кала Дж
Я бы предложил использовать переменную вместо публичного поля:
Из другого класса вы вызываете свою переменную следующим образом:
На самом деле, ему было бы лучше не иметь переменных внутри статического класса. — ХаосПандион
почему ты так говоришь . почему нет? — Натан В
Возможно, это только я, но я считаю, что делать статические классы полностью не имеющими состояния — это хорошая практика. — ХаосПандион
@Chaos: Ну, я мог бы с тобой согласиться. Но в этом случае имя переменной кажется константой, и мне кажется более элегантным использовать статическую переменную. — Фрэнсис Б.
почему бы не использовать (public const String name = «MyName»;)? — ХаосПандион
Вам необходимо указать модификатор доступа для вашей переменной. В этом случае вы хотите, чтобы он был общедоступным.
C# ссылка на переменную из другого метода
Я новичок в C# и мне действительно нужно знать, как вызвать/использовать строку из другого метода.
поэтому в этом примере мне нужно вызвать строку»a» определена в функции button1_Click() функции button2_Click()
8 ответов
обычно вы бы передали это как аргумент, например:
методы в вашем примере несколько прослушивателей событий. Обычно ты не звонишь им напрямую. (Я полагаю, вы can, но я никогда не находил экземпляр, где один должны.) Поэтому в этом конкретном случае было бы более разумно хранить значение в общем месте в классе для двух используемых методов. Что-то вроде это:
обратите внимание, однако, что это будет вести себя очень по-разному в ASP.NET — . Поэтому, если это то, что вы используете, вы, вероятно, захотите сделать еще один шаг. Причина, по которой он ведет себя по-другому, заключается в том, что на стороне сервера «нет состояния.»Таким образом, каждый щелчок кнопки, поступающий от клиента, приведет к совершенно новому экземпляру класса. Таким образом, установив этот член уровня класса в первом обработчике событий нажатия кнопки, он не будет отражаться при использовании его во втором нажмите кнопку обработчик событий.
в этом случае вы захотите посмотреть на сохраняющееся состояние в веб-приложении. Варианты включают:
- значения страниц (например, скрытые поля)
- печенье
- Переменные Сеанса
- Переменные Приложения
- База Данных
- Серверный Файл
- некоторые другие средства сохранения данных на стороне сервера и т. д.
нужно объявить string a в рамках class , не метод, на данный момент это «локальная переменная».
теперь вы можете получить доступ к значению вашего «частного поля» a из любого места внутри вашего class что в вашем примере будет Form .
рефакторинг, который в вызов метода (или свойство), чтобы вы могли получить доступ к значению a в другом месте в вашем приложении:
также обратите внимание, что вы можете использовать неявные объявления типов. По сути, это эквивалентные объявления:
make-переменная уровня класса (глобальная переменная) или создание геттера и сеттера для строки a, чтобы назвать пару параметров.
вы не можете этого сделать. string a Это объявление локальной переменной. он называется «локальным», потому что он доступен только» локально » для блока, в котором он происходит.
чтобы сделать переменную видимой для обоих методов, можно создать поле в классе, содержащем методы. Однако, если методы находятся в разных классах, решение становится более сложным.
вы не можете этого сделать, потому что эти переменные находятся в разных области (думайте, что это скрыто). Единственный способ достичь этого-переместить a в основной класс формы:
Наследование классов в C++
В этом руководстве мы узнаем о наследовании классов в C++ с помощью примеров. Наследование – одна из ключевых особенностей объектно-ориентированного программирования на С++. Это позволяет нам создать новый класс (производный класс) из существующего класса (базовый класс). Производный класс наследует функции от базового класса и может иметь собственные дополнительные функции.
Здесь класс Dog является производным от класса Animal. Поскольку Dog происходит от Animal, члены Animal доступны для Dog.

Обратите внимание на использование ключевого слова public при наследовании Dog от Animal.
Мы также можем использовать ключевые слова private и protected вместо public. Мы узнаем о различиях между использованием private, public и protected позже в этом руководстве.
Мы используем наследование только в том случае, если между двумя классами существует связь.
Вот некоторые примеры:
- Автомобиль – это средство передвижения.
- Апельсин – это фрукт.
- Хирург – это врач.
- Собака – это животное.
Пример 1
Здесь dog1 (объект производного класса Dog) может обращаться к членам базового класса Animal. Это потому, что Dog унаследован от Animal.
protected
Модификатор доступа protected особенно актуален. Как и частные члены, защищенные недоступны вне класса. Однако к ним могут обращаться производные и дружественные классы или функции.
Нам нужны защищенные члены, если мы хотим скрыть данные класса, но все же хотим, чтобы они унаследовались его производными классами.
Пример 2
Здесь Type переменной защищен и, следовательно, доступен из производного класса Dog. Мы можем видеть это, поскольку мы инициализировали тип в классе Dog с помощью функции setType().
С другой стороны, color частной переменной не может быть инициализирован в Dog.
Кроме того, поскольку ключевое слово protected скрывает данные, мы не можем получить доступ к типу напрямую из объекта класса Dog или Animal.
Режимы доступа в наследовании
До сих пор мы использовали ключевое слово public для наследования класса в С++ от ранее существовавшего базового класса. Однако мы также можем использовать ключевые слова private и protected для наследования классов. Например:
Различные способы получения классов в C++ известны, как режимы доступа. Эти режимы доступа имеют следующий эффект:
- public: если производный класс объявлен в общедоступном режиме, то члены базового класса наследуются производным классом, как и они.
- private: в этом случае все члены базового класса становятся закрытыми членами производного класса.
- protected: открытые члены базового класса становятся защищенными членами производного класса.
Частные члены базового класса всегда являются частными в производном классе.
Переопределение функции-члена при наследовании
Предположим, базовый и производный класс имеют функции-члены с одинаковыми именами и аргументами.
Если мы создаем объект производного класса и пытаемся получить доступ к этой функции-члену, она в производном классе вызывается вместо функции в базовом классе. Функция-член производного класса переопределяет функцию-член базового класса.
доступ к переменным из другого класса
у меня есть 2 класса (класс формы и класс пользовательского управления), а в форме у меня есть список. Я хотел бы получить доступ к этому списку из класса пользовательского управления. Как мне это сделать ? я мог бы передать ссылку из класса формы в класс пользовательского управления, но мне любопытно, есть ли другой способ?
С уважением, Александру Бадеску
Ответы (1)
Передача его в качестве ссылки — ваш лучший вариант — именно так вы должны это сделать.
Он сводит связь между пользовательским элементом управления и формой к минимуму и позволяет использовать пользовательский элемент управления в другом месте.