将“关键字”(真/假)更改为“是/否” - 布尔C#

时间:2015-03-04 03:58:16

标签: c#

我试图更改"关键字"一个布尔值(真/假),我的意思是当我在控制台写。

例如:

我想要的是什么:

  • 问:这首歌是买的?
  • R:是

我有什么:

  • 问:这首歌是买的?
  • R:是的

我不想写" true"我想写#34;是"并且C#可以理解它。

代码:

public void questionBought(string miQuestion)
{
    Console.ForegroundColor = ConsoleColor.Green;
    string temporal;
    bool variableBool;
    Console.WriteLine(miQuestion);
    Console.ForegroundColor = ConsoleColor.Gray;
    temporal = Console.ReadLine();
    variableBool = Convert.ToBoolean(temporal);
    this.setBought(variableBool);
}

4 个答案:

答案 0 :(得分:1)

您当前的代码:

variableBool = Convert.ToBoolean(temporal);

相当于:

variableBool = (temporal == "true");

同样,您可以针对您选择的任何字符串测试相等性:

variableBool = (temporal == "yes");

更好的是,忽略大小写(因此用户可以在比较期间使用以下方式键入“是”,“是”,“是”等)

variableBool = temporal.Equals("yes", StringComparison.CurrentCultureIgnoreCase);

答案 1 :(得分:1)

C#本身并没有理解"字符串的人类意义。任何字符串都只是一个字符串。但是,您可以检查这些字符串的预期值。像这样:

temporal = Console.ReadLine();
if (temporal.ToLower().Equals("yes"))
    variableBool = true;
else if (temporal.ToLower().Equals("no"))
    variableBool = false;
else
    Console.WriteLine("Unable to parse response.");
this.setBought(variableBool);

答案 2 :(得分:1)

如果您在Razor View中执行此操作,则可以执行以下操作:

@((item.variableBool) ? "Yes" : "No") 

如果它是一个可以为空的bool并假设它总是有一个值:

@(((bool)item.variableBool) ? "Yes" : "No")

答案 3 :(得分:0)

有很多方法可以实现这一目标。您正在读取一个字符串,所以只需检查字符串是什么。

您可以尝试这样的事情:

temporal = Console.ReadLine();
if (temporal.Equals("yes"))
{
   variableBool = true;
}
else
{
   variableBool = false;
}

由于String.Equals返回bool值,因此可以缩短为:

temporal = Console.ReadLine();
variableBool = temporal.Equals("yes");

进一步帮助它更加强大并接受任何类型的外壳,例如"是","是"," YeS"您可以在检查相等性之前将其转换为小写:

temporal = Console.ReadLine();
variableBool = temporal.ToLower().Equals("yes");

有很多方法可以解决这个问题,所以请尝试查找其他方法。