![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
boxpvm |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 14.11.2011 Репутация: нет Всего: нет |
Условия задачи:
// Я создал класс Igrok с полем Name public class Igrok { public string Name; } // При нажатии на кнопку должен создаваться экземпляр игрока и из формы присваиваться имя игрока в поле Name public void button1_Click (object sender, RoutedEventArgs e) { Igrok Igrok1; Igrok1 = new Igrok(); Igrok1.Name = textBox1.Text; } // Метод работает каждые 100мс и должен в форму выводить имя игрока Igrok1.Name (имя игрока должно выводиться именно здесь, так как оно выводится вместе с расчитанным временем в игре). public void Each_Tick (object o, EventArgs sender) { TextBlockTimer.Text = Igrok1.Name; } Вопрос: Почему в методе Each_Tick ошибка "Igrok1.Name не существует в текущем контексте"? В методе button1_Click Igrok1 = new Igrok() создается как локальная переменная. Как сделать чтобы Igrok1.Name был виден в Each_Tick? |
|||
|
||||
VladDnepr |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 30.12.2009 Репутация: нет Всего: нет |
У тебя Igrok Igrok1; является локальной переменной метода button1_Click. Она доступна только в этом методе.
Вынеси ее куда-то повыше. |
|||
|
||||
boxpvm |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 14.11.2011 Репутация: нет Всего: нет |
А как же я вынесу повыше, если экземпяр класса Igrok - Igrok1 должен создаваться при нажатии на кнопку.
|
|||
|
||||
Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 11 Всего: 24 |
надо наверное учебник почитать, первую главу про видимость переменных. тогда и вопросов таких не будет...
|
|||
|
||||
Brilona |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 8.7.2008 Репутация: нет Всего: 3 |
Экземпляр класса создаётся этой строкой:
Переменная для него может быть объявлена и выше. |
|||
|
||||
boxpvm |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 14.11.2011 Репутация: нет Всего: нет |
Дело в том что я не знаю заранее сколько будет экземпляров класса Igrok.
Напимер в онлайн-игре игроки у меня должны появляться при нажатии кнопки входа в игру. Заранее я не могу объявлять: Igrok Igrok1;//объявлено на уровне класса, будет видна и доступна во всех методах этого класса Если объявить заранее, то ошибки нет, но то, что я присваиваю поле в void button1_Click Igrok1.Name = textBox1.Text; и пытаюсь его использовать в void Each_Tick TextBlockTimer.Text = Igrok1.Name; возникает ошибка "В экземпляре объекта не задана ссылка на объект." Как же в этом C# использовать в одном методе то, что делаешь в другом методе? (вы извините за глупый вопрос, просто читать кучу учебников нет времени, разбираюсь по ходу). |
|||
|
||||
Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 11 Всего: 24 |
боюсь что помучавшись пару недель все равно придется обратиться к учебникам. дело не в шарпе, дело в понимании архитектуры. и без знания минимальных основ, мне кажется, дальше разбираться просто не имеет смысла, потому что будет становится только сложнее... про твою проблему, очевидно что если игроков будет много(кстати интересно как их будет много через одну кнопку? или это веб?), то нужно сделать массив игроков(в данном случае лучше List<T>) и использовать его для хранения всех пользователей. объявить его на общем уровне, а в методах, где нужно, добвлять/удалять/изменять его элементы. но опять же без основ это все темный лес и тут быстрее шею себе свернешь чем разберешься... |
|||
|
||||
boxpvm |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 14.11.2011 Репутация: нет Всего: нет |
Спасибо за ответы!
Теперь буду читать учебники! |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |