c# - 无法将类型 'string' 隐式转换为 'bool'

标签 c#

<分区>

Possible Duplicate:
Help converting type - cannot implicitly convert type 'string' to 'bool'

我有这个代码:

private double Price;
private bool Food;
private int count;
private decimal finalprice;

public void Readinput()
{
    Console.Write("Unit price:  ");
    Price = Console.ReadLine();

    Console.Write("Food item y/n:  ");
    Food = Console.ReadLine();

    Console.Write("Count:  ");
    count = Console.ReadLine();
}

private void calculateValues()
{
    finalprice = Price * count;
}

并得到以下错误:

Cannot implicitly convert type 'string' to 'bool'

Cannot implicitly convert type 'string' to 'double'

Cannot implicitly convert type 'string' to 'int'

Cannot implicitly convert type 'double' to 'decimal'. An explicit conversion exists (are you missing a cast?)

我知道这意味着什么,但我不知道如何修复它。

最佳答案

使用bool.Parsebool.TryParse 方法将字符串值转换为boolean

Price = double.Parse(Console.ReadLine());
Food =bool.Parse(Console.ReadLine());
count = int.Parse(Console.ReadLine());

您不能将“y”或“n”值转换为 bool 值,而是必须以字符串形式接收值,如果它是“y”,则存储 truefalse 否则。

Console.Write("Food item y/n:  ");
string answer = Console.ReadLine();
if(answer=="y")
   Food=true;
else
   Food=false;

或者(@Mr-Happy 的建议)

 Food = answer == "y"

您需要在计算finalprice 时指定显式转换。

private void calculateValues()
{
   // convert double result into decimal.
    finalprice =(decimal) Price * count;
}

关于c# - 无法将类型 'string' 隐式转换为 'bool',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8895547/

相关文章:

c# - 使用 OneDrive API 下载共享文档

c# - 使用C#修改然后显示页面

c# - ASP.NET Identity 检查自定义 UserValidator 实现中是否存在电子邮件

c# - 使用 TCP 套接字通过互联网发送/接收字节(可能使用静态 IP)

c# - 检查 RoutedEvent 是否有任何处理程序

c# - 在后面的代码中将类添加到转发器内部的 anchor 标记

c# - Entity Framework 4 : where is my load method and IsLoaded property?

c# - 从 F# 代码使用 C# 中定义的扩展方法

c# - 无法将 Json 字符串反序列化为包含对象数组的对象

C# 反射调用 - 返回通用对象 { 类型 } - 需要类型