嗨,我正在编写一个基本程序,以查找输入数字是否为素数.我有一个checkPrime(num)检查素数的函数,true如果num是prime,则返回false.现在在我的main()函数中我使用条件运算符来缩短代码,但是我得到一个我不确定的错误.以下是我的代码:
static void Main(String[] args) {
int n = Int32.Parse(Console.ReadLine());
while (n-- > 0) {
int num = Int32.Parse(Console.ReadLine());
(checkPrime(num) == true) ? Console.WriteLine("Prime") : Console.WriteLine("Not Prime");
}
}
Run Code Online (Sandbox Code Playgroud)
当我编译时,我Only assignment, call, increment, decrement, await, and new object expressions can be used as a statement在条件语句行的while循环中得到错误.我不确定我错过了什么.有类似的问题在这里,人们已经回答了条件运算符线是一个表达式,而不是语句,因此必须有对表达式的值某种或转让.在MSDN参考中给出了相同类型的示例,其中解释执行类似的操作
// ?: conditional operator.
classify = (input > 0) ? "positive" : "negative";
Run Code Online (Sandbox Code Playgroud)
但是我无法理解的是在我的函数中我所要做的就是检查函数的返回值然后打印输出.那么这个表达式的东西会出现在我的案例中.
我对编译器错误CS0201的术语感到困惑.它说
只有赋值,调用,递增,递减和新对象表达式才能用作语句
所以除此之外的任何事情都不能成为一种说法.那么下面的行如何不会产生上述错误.
Anyclass obj;
Run Code Online (Sandbox Code Playgroud)
这里我们没有任何赋值或调用或递增或递减或新对象表达式.
我知道我遗漏了一些东西,因为官方文件与这个错误相矛盾,声明声明也是一个声明.