当前位置: 首页 > 编程语言 > C#

C#条件运算符错误Onlyassignment,call,increment,decrement,waitandnewobjectexpressionscanbeasstatements分享

时间:2023-04-10 23:30:24 C#

C#conditionaloperatorerrorOnlyassignment,call,increment,decrement,waitandNewObjectExpressionscan仅用作语句您好,我正在编写一个基本程序来查找输入数字是否为质数。我有一个检查素数的checkPrime(num)函数,如果num是素数则返回true,否则返回false。现在在我的main()函数中,我使用条件运算符来缩短代码,但我收到了一个我不确定的错误。这是我的代码:staticvoidMain(String[]args){intn=Int32.Parse(Console.ReadLine());while(n-->0){intnum=Int32.Parse(Console.ReadLine());(checkPrime(num)==true)?Console.WriteLine("Prime"):Console.WriteLine("NotPrime");当我编译时,我得到错误,因为只有赋值、调用、增量、递减、等待和新对象表达式可以用作语句只有赋值、调用、增量、递减、等待和新对象表达式可以用作条件语句行的while循环中的语句。我不确定我错过了什么。这里有类似的问题,人们已经回答说条件运算符行是一个表达式而不是语句,因此必须对表达式的值进行某种排序或赋值。MSDN参考中给出了一个相同类型的示例,其中解释为执行类似//?:conditionaloperator.classify=(input>0)?“正负”;但我无法理解的是在我的函数中我所要做的就是检查函数的返回值并打印输出。然后在我的情况下会出现具有这种表达方式的东西。条件运算符是一个表达式,而不是语句,这意味着它不能独立存在,因为结果必须以某种方式使用。在您的代码中,您尝试生成副作用而不是使用结果。这?运算符返回第一个或第二个表达式的结果,具体取决于前面的情况。但是Console.WriteLine()的返回类型是无效的。所以运营商得不到任何回报。void不是?:运算符的有效返回类型。所以这里不能使用void方法。所以你可以这样做:while(n-->0){intnum=Int32.Parse(Console.ReadLine());字符串结果=checkPrime(num)?“素数”:“非素数”;控制台.WriteLine(结果);}或者您在Console.WriteLine()调用中使用运算符:while(n-->0){intnum=Int32.Parse(Console.ReadLine());Console.WriteLine(checkPrime(num)?"Prime":"NotPrime");在这两个示例中,运算符都根据条件返回两个字符串之一。这就是该运算符的用途。请注意,您不需要将checkPrime()的结果与true进行比较。结果已经是一个布尔值。以上就是C#学习教程:C#条件运算符错误Onlyassignment,call,increment,decrement,waitandnewobjectexpressions可以作为语句分享的全部内容,如果对大家有用需要进一步了解C#学习教程,希望大家多多关注—本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: