繁体   English   中英

将“关键字”(是/否)更改为“是/否” -Boolean C#

[英]Change “Key word” (true/False) to “Yes/no” -Boolean C#

我正在尝试更改布尔值(真/假)的“关键字”,这是指我在控制台上编写时的意思。

例如:

我想要的是:

  • 问:这首歌被买了吗?
  • R:是的

我有的:

  • 问:这首歌被买了吗?
  • R:是的

我不想写“ true”,我想写“ yes”,并且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);
}

您当前的代码:

variableBool = Convert.ToBoolean(temporal);

等效于:

variableBool = (temporal == "true");

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

variableBool = (temporal == "yes");

更好的是,在比较过程中,使用以下命令忽略大小写(因此用户可以键入“是”,“是”,“是”等)

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

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);

如果在“剃刀视图”中执行此操作,则可以执行以下操作:

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

如果它是一个可为null的布尔,并假定它始终具有一个值:

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

有多种方法可以实现此目的。 您正在读字符串,所以只需检查字符串等于什么即可。

您可以尝试如下操作:

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

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

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

为了进一步使它更加健壮并接受任何类型的大小写形式,例如“是”,“是”,“是”,您可以在检查相等性之前将其转换为小写:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM