2016-08-23 93 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

你有一个额外的分号。 三元表达式是ONE表达式,所以它只有一个分号在它的末尾。

(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',你如何使用结果一个空白? –