运算符||不能应用于类型bool和string/string和string
本文关键字:string bool 类型 不能 应用于 运算符 | 更新日期: 2023-09-27 18:02:34
我发现非常困难的简单任务。
Console.Write("[" + CurrentTime + "] Name a day of the week? ");
string vDay = Console.ReadLine();
if (vDay != "Monday" || "Tuesday" || "Wednesday" || "Thursday" || "Friday")
{
Console.WriteLine("that is not a valid day of the week");
}
第一次使用!=它给了我一个错误,如果没有!=只需=我得到"字符串和字符串">
基本上,我想做的是,例如,如果有人键入"你好",它会说这不是一周中有效的一天。
这么简单的任务,但我觉得很难,谢谢你的帮助。
可能会更干净一些,比如:
List<string> list = new List<string> { "Monday", "Tuesday", "Wednesday", "Thursday", ... };
if (!list.Contains(vDay ))
{
Console.WriteLine("that is not a valid day of the week");
}
这就是您所需要的:
if (vDay != "Monday" && vDay != "Tuesday" && vDay != "Wednesday" && vDay != "Thursday" && vDay != "Friday")
{
Console.WriteLine("that is not a valid day of the week");
}
由于这里的所有答案都不能解释你最初面临这个问题的原因,我将尝试这样做。
当我使用时!=它给了我一个错误,说"不能应用于bool"和字符串">
这是因为,在你的代码中:
...vDay != "Monday" || "Tuesday" ...
将vDay
与成功求值的字符串"Monday"进行比较,然后将结果(布尔值(与字符串"Tuesday"进行对比。这会给您带来">…无法应用于布尔和字符串.."的问题
没有!=只需=I get"字符串和字符串
vDay
被分配了"Monday"的值(这可能导致字符串"星期一"(,但是字符串"Monday(星期一("与字符串"Tuesday(星期二("进行比较。这会给您带来">…无法应用于字符串和字符串.."的问题。
正确的方法是单独指定操作员:
...vDay != "Monday" && vDay != "Tuesday"...
或者使用其他答案最好描述的其他方式。
下面是另一个例子,使用基于集合的逻辑。
var days = new HashSet<string> { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" };
if (!days.Contains(vDay))
{
Console.WriteLine("that is not a valid day of the week");
}
编辑
我想解释一下错误:
String
上的Operator !=
只接受运算符的RHS上的单个字符串,C#也不支持通过逻辑运算符或||
运算符创建List
(如果这是预期的,也不是相反,在||
ed字符串上投影!=运算符(。然而,可以创建集合,并且可以使用诸如Contains
之类的集合操作。在这种情况下,Hashset
通常是我的首选,因为它充当了一个索引查找(尽管可以说对于一组~5个字符串来说是过度的,但对于更大的字符串集,这将比List
或Array
更好地扩展(。
if (vDay == "Monday" ||vDay == "Tuesday" ||vDay == "Wednesday" ||vDay == "Thursday" ||vDay == "Friday")
{
Console.WriteLine("is not a valid day of the week");
}
这样就可以了。
Text='<%# Eval("STS").ToString() == "N" ||Eval("STS").ToString() =="R" ? "<h5>Approve?</h5>" : "<h5>Approved!</h5>" %>'