2014-10-27 3 views
0

Я пишу короткую программу. Мне нужно, чтобы я хотел установить «правильный» параметр в Game.cs, и в моем advTry.cs я хочу использовать этот «правильный» параметр для определения вывода. с моим классом advTry.cs как:Класс, получающий параметр от Game.cs

public bool correct { get; set; } 

if (correct) 
{ 
    solveButton = new MenuButton(contentManager.Load<Texture2D>("solve"), 
     buttonCenter, GameState.AnswerNo); 
    Console.WriteLine("OK"); 
} 
else 
{ 
    solveButton2 = new MenuButton(contentManager.Load<Texture2D>("solve"), 
        buttonCenter, GameState.AnswerYes); 
    Console.WriteLine("Not OK"); 
} 

Хотя в моем GAME.cs, я определить правильно, как:

if (messageString == "18") 
{ 
    Console.WriteLine("Main OK"); 
    advTry.correct = true; 
} 
else 
{ 
    advTry.correct = false; 
    Console.WriteLine("Main not OK"); 
} 

Я использую Console.WriteLine проверить прохождение логического параметра «правильный» , В то время как результат изначально «Не в порядке», тогда, когда я начинаю вводить «18», сначала выдает «Main not OK», затем «Main OK» (легко понять, потому что ввод «1», затем «8») ,

Однако самая большая проблема: «ОК» никогда не выходит, состояние «GameState.AnswerNo» не может быть выполнено, почему это так? Как это исправить?

+0

Я отредактировал ваше название. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

+0

Спасибо за напоминание. Будут делать это в будущем. –

ответ

0

Ваш вопрос совсем не ясен. Вы не дали представления о структуре кода, кроме этих двух условностей. Сейчас просто невозможно ответить. Тем не менее, мое лучшее предположение из того, что вы здесь написали, заключается в том, что вы установили значение «correct» в true в вашем классе advTry, но вы не запустили код внутри этого класса для вывода OK на консоль. Этот код не будет запускаться автоматически только потому, что вы установите значение «правильно». Вам нужно сделать что-то подобное в advTry.cs:

private bool _correct; 
public bool correct 
{ 
    get { return _correct; } 
    set 
    { 
     _correct = value; 
     output(); 
    } 
} 
private void output 
{ 
    if (_correct) 
    { 
     //output "OK" 
    } 
    else 
    { 
     //output "Not OK" 
    } 
} 
+0

Или даже используйте метод SetCorrect (bool), так как сеттеры ничего не должны делать за пределами заданных переменных (обычно используется для одновременного установки нескольких вещей, иначе установка не нужна вообще). – mcmonkey4eva

+0

Привет всем. Спасибо за весь ваш ответ. Прошу прощения за путаницу. Мне нужно, чтобы я хотел установить «правильный» параметр в Game.cs, и в моем advTry.cs я хочу использовать этот «правильный» параметр для определения вывода. Могу ли я спросить, почему многие люди используют _correct, поставив _ спереди, пожалуйста? –

+0

Подчеркивание - это просто соглашение, которое используется для указания, что переменная является частной. Таким образом, у вас есть общедоступное свойство «правильно» с геттером и сеттер, который устанавливает значение частной переменной _correct. Вы попробовали код? Если вы измените advTry.cs, как было предложено, и оставьте Game.cs таким, какой он есть, вы увидите результат, который вы ищете. –

Смежные вопросы