三元运营商未按预期工作

Web*_*ane 1 c#

我在这里使用此代码将结果显示为偶数或奇数而不是true和false:

Console.WriteLine(" is " + result == true ? "even" : "odd");
Run Code Online (Sandbox Code Playgroud)

因此我使用三元运算符,但它抛出错误,一些语法问题在这里,但我无法捕捉它.提前致谢

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

    namespace ConsoleApplicationForTesting
    {
        delegate int Increment(int val);
        delegate bool IsEven(int v);

 class lambdaExpressions
    {
        static void Main(string[] args)
        {

          Increment Incr = count => count + 1;

          IsEven isEven = n => n % 2 == 0;


           Console.WriteLine("Use incr lambda expression:");
           int x = -10;
           while (x <= 0)
           {
               Console.Write(x + " ");
               bool result = isEven(x);
               Console.WriteLine(" is " + result == true ? "even" : "odd");
               x = Incr(x);
           }
Run Code Online (Sandbox Code Playgroud)

Hab*_*bib 6

看看你得到的错误:

运算符'=='不能应用于'string'和'bool'类型的操作数

那是因为缺少括号.它连接字符串和bool值,这会产生一个字符串值,你无法将它与a进行比较bool.

要修复它:

Console.WriteLine(" is " + (result == true ? "even" : "odd"));
Run Code Online (Sandbox Code Playgroud)

进一步澄清.

bool result = true;
string strTemp = " is " + result;
Run Code Online (Sandbox Code Playgroud)

上面的语句是一个有效的语句,并产生一个字符串is True,所以你的语句目前看起来像:

Console.WriteLine(" is True" == true ? "even" : "odd");
Run Code Online (Sandbox Code Playgroud)

字符串和bool之间的上述比较无效,因此您会收到错误.