2013-10-13 1 views
0

Для моего стека я использую:Не работает Нажмите на стек в C#

private Stack stOperations = new Stack(); 

Так что, когда стек constains только один элемент (Stack [0] = "ложь" (это строка)) и я попробуйте нажать, используя:

stOperations.Push(neededIDs.Contains(element) ? "true" : "false"); 

Где neededIDs.Contains(element) = false .. ничего не происходит. Стек не меняется! Я знаю, потому что я вижу, что в VS отладчик:

stack in debugger

Объясните мне, пожалуйста, где я не прав?

+0

этот код работает здесь прекрасно. Как вы определили, что стек не содержит два элемента после нажатия? – Axarydax

+1

'Stack' не имеет индексатора. Как вы проверяете 'Stack [0]'? Код определенно работает. Кроме того, это многопоточная среда? –

+1

Вы используете System.Collections.Stack? Вам будет лучше использовать System.Collections.Generic.Stack в любом случае ... – Axarydax

ответ

-1

сделать это вместо:

neededIDs.Contains(element)? stOperations.Push("true"):stOperations.Push("false"); 
+2

Мне не нравится этот стиль, так как я думаю, что тернарный оператор должен использоваться, чтобы вернуть значение, а не делать побочные эффекты – Axarydax

+0

@Axarydax hmm, я использую этот стиль, потому что он ясно говорит что я пытаюсь сделать –

+3

Я понимаю, но я думаю, что исходный код Игоря: 'stack.Push (выражение?« true »:« false »)' более ясный, поскольку вы толкаете что-то в обоих случаях, просто изменяется значение. – Axarydax

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