运算符||不能应用于类型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");
 }

第一次使用!=它给了我一个错误,如果没有!=只需=我得到"字符串和字符串">

基本上,我想做的是,例如,如果有人键入"你好",它会说这不是一周中有效的一天。

这么简单的任务,但我觉得很难,谢谢你的帮助。

运算符||不能应用于类型bool和string/string和string

可能会更干净一些,比如:

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个字符串来说是过度的,但对于更大的字符串集,这将比ListArray更好地扩展(。

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>"  %>'