Как обратиться к переменной из другого класса c

от admin

Как получить значение переменной из другого класса? [дубликат]

Каким образом мне получить это значение в другом классе? К примеру, в такой конструкции:

У Вас в коде используются статические методы. Это удобно, с точки зрения того, что не нужно создавать экземпляр класса при вызове такого метода — но тогда логично было бы использовать вообще статические классы.

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

Но на самом деле у вас есть другая проблема: у Вас метод класс DogStats запрашивает у пользователя некий ввод, но не сохраняет введенное значение.

Обычно для таких вещей в классах создают поля. То есть, есть поле — "хранитель данных", есть метод — "код, который данные спросит у пользователя".

Поля могут быть приватными, могут быть — и это очень здорово — объявлены как — это даёт возможность внутри класса работать с этим полем, а "снаружи" — только читать его.

С этими замечаниями задача становится решаемой, путём совсем небольшой модификации кода:

Вывод программы тогда будет примерно слеующим:

Если у Вас есть вопросы — пишите в комментариях, а вообще из серьезного чтива по C# я бы посоветовал книжку автора Албахари ("Справочник. Полное описание языка") — по этой фамилии она легко гуглится, и перевод одного из изданий, не слишком устаревшего, есть на русском.

Вызов переменной из другого класса

Как я могу получить доступ к переменной в одном общедоступном классе из другого общедоступного класса в C #?

Мне нужно позвонить из:

Заранее спасибо за помощь.

Я работаю в консольном приложении.

задан 08 сен ’09, 01:09

4 ответы

Это было бы просто:

и он также должен быть общедоступным:

Я пробовал это и получаю: Variables.name недоступен из-за уровня защиты — user96377

Вы уверены, что добавили модификатор public. — Натан В

Когда я ответил, я почему-то не увидел добавленный вами модификатор public. Да, сработало. Большое спасибо 🙂 — user96377

Я получаю ссылку на объект, которая требуется для нестатического поля. — Кала Дж

Я бы предложил использовать переменную вместо публичного поля:

Из другого класса вы вызываете свою переменную следующим образом:

На самом деле, ему было бы лучше не иметь переменных внутри статического класса. — ХаосПандион

почему ты так говоришь . почему нет? — Натан В

Возможно, это только я, но я считаю, что делать статические классы полностью не имеющими состояния — это хорошая практика. — ХаосПандион

@Chaos: Ну, я мог бы с тобой согласиться. Но в этом случае имя переменной кажется константой, и мне кажется более элегантным использовать статическую переменную. — Фрэнсис Б.

Читать:
Notepad exe что это

почему бы не использовать (public const String name = «MyName»;)? — ХаосПандион

Вам необходимо указать модификатор доступа для вашей переменной. В этом случае вы хотите, чтобы он был общедоступным.

Как обратиться к переменной из другого класса c

Лучший отвечающий

Вопрос

  • Изменено Errhio 31 января 2014 г. 19:02

Ответы

Сделаем содержимое сообщества лучше, вместе!

  • Предложено в качестве ответа Yatajga Moderator 31 января 2014 г. 19:51
  • Помечено в качестве ответа Maksim Marinov Microsoft contingent staff, Moderator 10 февраля 2014 г. 10:38

Все ответы

Сделаем содержимое сообщества лучше, вместе!

  • Предложено в качестве ответа Yatajga Moderator 31 января 2014 г. 19:51
  • Помечено в качестве ответа Maksim Marinov Microsoft contingent staff, Moderator 10 февраля 2014 г. 10:38

Судя по количеству просмотров,
тема актуальна для многих —
я тоже в свое время немало покувыркался с этой проблемой.

Как передать переменную из первичного класса, Form1,
всем поочередно вызываемым методам вторичных классов?
Можно, конечно, пользоваться формальными параметрами,
но это не красиво и утомительно — получается длинная — предлинная цепь.
В конце концов уже и не понятно, какая переменная откуда,
и на каком этапе была послана.
А если нужно наоборот, из какого-то затерявшегося класса
запустить метод в первичном классе,
или скопировать оттуда значение нужной переменной ?
Тем более, что эти манипуляции могут понадобиться из
непредвиденного количества вторичных классов.
А если этот затерявшийся класс к тому же еще помещен
в библиотеку в другом именованном пространстве?
Cледующая программа иллюстрирует
ответы на эти вопросы.
Здесь показаны два класса — Form1 и SecondClass,
в двух различных именованных пространствах — First и Second.
При инициализации первичного класса
запускается SecondMetod во вторичном классе,
который переустанавливает значение переменной FirstString в первичном классе,
а затем возвращает это значение своей переменной S.

Как получить доступ к значению переменной из одного класса в другой?

Я хочу получить доступ к строке из одного класса в другой. Я использовал метод свойств следующим образом:

Я назначаю значение пользователю в функции

Теперь, когда я пытаюсь использовать это значение в своей другой функции, которая вызывается после назначения этого значения

Я получаю пустое значение. Как это сделать?

2 ответа

Вы не используете один и тот же экземпляр. Пытаться

Если все, что вы хотите вернуть, это строка, попробуйте что-то вроде

Как уже упоминалось в комментариях, вы создаете два отдельных экземпляра MyClass которые упрощаются в чем-то вроде:

Вы можете обойти это тремя способами:

1) Используйте один и тот же экземпляр MyClass для второго вызова, но в этом случае вам нужно быть в одной области или передать экземпляр в новую область.

Похожие статьи