【问题标题】:How to resolve the error: Cannot implicitly convert type `long' to `bool'?如何解决错误:无法将类型“long”隐式转换为“bool”?
【发布时间】:2021-08-15 15:57:25
【问题描述】:
using System;
using System.Linq;
    
namespace Problem
{
    class Prog
    {
        public static void Main(string[] args)
        {
            long t= long.Parse(Console.ReadLine());
         
            while (t-->0)
            {
                long n, even = 0, odd = 0, a;
    
                n = long.Parse(Console.ReadLine());
    
                for (long i = 0; i < n; i++)
                {
                    a = long.Parse(Console.ReadLine());
                    if (a % 2)
                        odd++;
                    else
                        even++;
                }
                Console.WriteLine((even < odd) ? even : odd);
                
            }
        }
    }
}

我是用这个代码来解决hackerearth中的一个问题,因为我是C#的新手,所以练习,但我实际上并没有得到如何解决这个错误说:

solution.cs(21,25):错误 CS0029:无法将类型“long”隐式转换为“bool”
编译失败:1 个错误,0 个警告`

【问题讨论】:

    标签: c# compiler-errors


    【解决方案1】:

    if 语句期望 bool 检查,在您的情况下,a % 2 仅返回一个 long 数字,因为 a 的类型为 long

    您只需要在您的if 语句中写一个boolean expression

    if (a % 2 != 0)
    

    【讨论】:

    • 感谢您的帮助!我得到了答案
    【解决方案2】:

    通常当错误信息显示时

    无法将 X 隐式转换为布尔值

    这通常意味着它需要一个布尔表达式,所以你应该检查你有if语句和循环的代码,并检查你是否输入了错误。这些是编译器通常需要布尔表达式的地方。

    在您的编码中if (a % 2) 是错误的,请注意a % 2 确实返回一个长数字,而不是一个真/假值。

    【讨论】:

    • 感谢您的建议,从现在开始我一定会使用它
    • 其实while (t--&gt;0)没有错,就是while ((t--)&gt;0)
    猜你喜欢
    • 2017-10-05
    • 1970-01-01
    • 2015-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多