2016-08-23 9 views
0

Вероятно, простая проблема синтаксиса. Это попытка консольной программы, которая считывает длину строки, полученной с помощью пользовательского ввода. Если длина больше 144, пользователь уведомляется о том, что длина строки слишком длинная, иначе введенная строка просто выводится на консоль.Использование Терминального оператора C#

string input = Console.ReadLine(); 
(input.Length > 144) ? Console.WriteLine("The message is too long"); : Console.WriteLine(input); 
Console.ReadLine(); 

Получение синтаксических ошибок в текущем состоянии в строке 2. Не хватает ли скобок?

+2

удалить точку с запятой –

+0

@ Rakitić - Удаление точки с запятой в середине не поможет, потому что 'Console.WriteLine' возвращает void. Тернарный оператор в C# не является ярлыком для 'If/else'. Каждая сторона': 'в операторе должна оценивать до некоторого значения и результат должен быть назначен или использован где-то. –

ответ

8

попробовать:

Console.WriteLine((input.Length > 144) ? "The message is too long" : input); 

вам нужно использовать возвращаемое значение оператора, или получить время компиляции ошибку Only assignment, call, increment, decrement, and new object expressions can be used as a statement.

Ни один из этих ответов не будет скомпилирован, я не уверен, что все получают.

+0

Это было решение, спасибо! –

+0

уверенный вещь @AlexEdwards – Jonesopolis

-3

У вас есть дополнительная точка с запятой. Тройное выражение - это ОДНОЕ выражение, поэтому оно имеет только одну точку с запятой в конце.

(input.Length > 144) ? Console.WriteLine("The message is too long") /*No Semi Here*/ : Console.WriteLine(input); 

Я считаю, что в C# (в отличие от C и C++), тройная выражение не может быть автономным.
В результате этого должен быть назначен.

Общее выражение должно иметь значение, но Console.WriteLine не возвращает значение (тип возврата void). Вы не можете иметь тернар, который оценивает тип void.

Вы пытались использовать тернар в качестве отдельного заявления, которое не является законным.

+0

Downvoters хотят прокомментировать? – abelenky

+0

Он не компилируется. –

+1

Хорошо, что вы объяснили это сами, * «тернарное выражение не может быть автономным. Результат его должен быть назначен или использован». *, 'Console.WriteLine' возвращает' void', как вы ожидаете использовать результат пустота? –