Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.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#从ReadLine变量字符串到Int_C# - Fatal编程技术网

C#从ReadLine变量字符串到Int

C#从ReadLine变量字符串到Int,c#,C#,我有一条语句,然后用户必须输入一个键。 如果他们进入其中一个,他们会做一件事,另一件事,另一件事 从我的Readline我有一个问题,在哪里 错误CS0029:无法将类型“int”隐式转换为“string” 这有什么问题,因为我认为我有: choice = Convert.ToInt32(Console.ReadLine()); 编辑 所以现在我使用了史蒂夫的答案(如下) 这将抛出以下错误消息: CS0029:无法将类型“int”隐式转换为“bool” 对于这一行,我认为: case 1:

我有一条语句,然后用户必须输入一个键。
如果他们进入其中一个,他们会做一件事,另一件事,另一件事

从我的Readline我有一个问题,在哪里

错误CS0029:无法将类型“int”隐式转换为“string”

这有什么问题,因为我认为我有:

choice = Convert.ToInt32(Console.ReadLine());
编辑

所以现在我使用了史蒂夫的答案(如下)

这将抛出以下错误消息:

CS0029:无法将类型“int”隐式转换为“bool”

对于这一行,我认为:

case 1:
  // action for choice == 1
  if(choice = 1|2)
     Console.WriteLine("Choice {0} Selected",choice);
  break;

看起来你有:

string choice;
choice = Convert.ToInt32(Console.ReadLine());
由于
Convert.ToInt32
返回一个
int
,您需要将
选项的声明类型更改为
int
(或创建一个新变量)


该错误显然是由于不正确地将整数赋值给字符串变量造成的。这可以通过多种方式解决,但这里最大的问题是你不能阻止你的用户键入任何东西(字母、字母、制表符),盲目地将用户键入的任何东西转换成整数从一开始就是注定的

在这种情况下,您应该始终进行防御性编程,并使用适当的转换方法

int choice;
if(!Int32.TryParse(Console.ReadLine(), out choice))
   Console.WriteLine("You should enter a integer number");
else
{
    switch(choice)
    {
        case 1:
            // action for choice == 1
            break;
        case 2:
            // action for choice == 2
            break;
        default:
            // action for any other integer number
            break;
   }
}
将尝试将输入转换为整数。如果无法转换输入,则返回false,否则返回true

编辑

在编辑之后,这一行不符合您的想法

if(choice = 1|2) 
这一行在值1和值2之间按位或生成值3,然后将值3分配给变量选项
if(3)
不是if语句所要求的布尔表达式

顺便说一句,您不需要这些代码,因为在案例1的开关中,您已经知道此时选择的值,并且可以直接编写

 Console.WriteLine("Choice {0} Selected",choice); 

或者,当choice==1时,您需要将
choice
的类型更改为
int
。什么类型是
choice
?如果错误无法从int转换为string,则问题可能是
choice
被声明为字符串。如果是字符串,只需执行
choice=Console.ReadLine()如果它是一个int,上面的内容应该可以正常工作。choice是变量名,上面声明为string choice;这就是你的问题,将
字符串选择
更改为
int选择
确保你的
选择
是一个
int
。好吧,这样就行了,但现在我的if语句不行,我得到了以下信息:错误CS0029:无法隐式地将类型“int”转换为“bool”@FettJ-请将信息添加到你的问题中。好吧,这样就行了,但现在我得到了这样的结果:错误CS0029:无法隐式地将类型“int”转换为“bool.Where”?在上面的代码中,没有任何东西试图将int转换为bool。它在下面作为if语句参数:if(choice=1 | 2)Console.WriteLine(“choice{0}Selected”,choice);请如果你有一个新的问题,那么发布一个新的问题。如果本页中的答案解决了您的问题,请查看,但它与上一个问题相关,因此作为选择,它会抛出一条错误消息,告诉我它无法将int转换为bool,尽管事实并非如此。
 Console.WriteLine("Choice {0} Selected",choice);