Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 错误 ;1和x9;无法隐式转换类型';char';至';布尔';_C#_.net - Fatal编程技术网

C# 错误 ;1和x9;无法隐式转换类型';char';至';布尔';

C# 错误 ;1和x9;无法隐式转换类型';char';至';布尔';,c#,.net,C#,.net,我见过其他问题,但答案似乎很复杂,无法理解,因此我的代码如下: 注意:我不熟悉c语言 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Input_Program { class Program { private static void Main() { Console.WriteLin

我见过其他问题,但答案似乎很复杂,无法理解,因此我的代码如下:

注意:我不熟悉c语言

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

namespace Input_Program
{
    class Program
    {
       private static void Main()
       {
           Console.WriteLine("Welcome to my bool program!");
           Console.WriteLine("Input a NON capital y or n when told to.");


            char Y;
            char N;

            if(Y = 'y')
            {}
        }
    }
}
谢谢
谢谢

您缺少一个等号:
if(Y=='Y')

按照现在的方式,它将值
'y'
赋值给
y
,这也是赋值表达式的结果。它是一个
char
,而编译器需要一个
bool
结果

更新:

当然,正如HPDeveloper所说,编译器也会坚持要求您在读取之前为
Y
赋值。因此:

char Y = 'y';
char N = 'n';

if(Y == 'y')
{}

缺少等号:
if(Y=='Y')

按照现在的方式,它将值
'y'
赋值给
y
,这也是赋值表达式的结果。它是一个
char
,而编译器需要一个
bool
结果

更新:

当然,正如HPDeveloper所说,编译器也会坚持要求您在读取之前为
Y
赋值。因此:

char Y = 'y';
char N = 'n';

if(Y == 'y')
{}

单个
=
用于分配。您要查找的是相等运算符,
=

单个
=
用于赋值。您要查找的是相等运算符,
==

在您提供的代码中

(Y = 'y')
计算结果为
'y'
,因为新分配将始终作为成功分配的结果返回。这样,
'y'
就不能在
if
语句中转换为布尔值进行比较

=
是赋值运算符。要比较两个值,应使用
==

除此之外,您还需要使用
(char)Console.Read()
,以便程序从用户输入中读入字符:

 char Y = (char) Console.Read();
 if(Y == 'y'){
     Console.WriteLine('You pressed YES.');
 }else{
     Console.WriteLine('You probably pressed NO.');
 }

在您提供的代码中

(Y = 'y')
计算结果为
'y'
,因为新分配将始终作为成功分配的结果返回。这样,
'y'
就不能在
if
语句中转换为布尔值进行比较

=
是赋值运算符。要比较两个值,应使用
==

除此之外,您还需要使用
(char)Console.Read()
,以便程序从用户输入中读入字符:

 char Y = (char) Console.Read();
 if(Y == 'y'){
     Console.WriteLine('You pressed YES.');
 }else{
     Console.WriteLine('You probably pressed NO.');
 }

作为一个快速的解释;如果你说if(Y='Y'){},那么你实际上是在做if(Y),它失败了,因为Y是一个字符,if()需要一个布尔值。虽然我会对错误有更多的了解:)现在它说使用无符号局部变量Y。这是因为您没有为
Y
赋值。你的行
chary
仅声明变量,但变量为空;如果你说if(Y='Y'){},那么你实际上是在做if(Y),它失败了,因为Y是一个字符,if()需要一个布尔值。虽然我会对错误有更多的了解:)现在它说使用无符号局部变量Y。这是因为您没有为
Y
赋值。你的行
chary
仅声明变量,但变量为空。