我试图更改"关键字"一个布尔值(真/假),我的意思是当我在控制台写。
例如:
我想要的是什么:
我有什么:
我不想写" 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);
}
答案 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");
有很多方法可以解决这个问题,所以请尝试查找其他方法。