C#简单的IF或疑问句

C#简单的IF或疑问句,c#,C#,很抱歉问这个问题,因为我想我知道答案,如果用户名大于4个字符或用户名不是名为学生的帐户,我想退出该程序。然而,即使用户名只有3个字符,并且不是学生,我仍然会点击Application.Exit。我做错了什么 if (userName.Length > 4 | userName != "student") { Application.Exit(); } 不好意思:-(您需要使用布尔OR(|)运算符,而不是按位OR(|) 不过,正如我在评论中所说,你的逻辑对我来说并不一定有任何意义。

很抱歉问这个问题,因为我想我知道答案,如果用户名大于4个字符或用户名不是名为学生的帐户,我想退出该程序。然而,即使用户名只有3个字符,并且不是学生,我仍然会点击Application.Exit。我做错了什么

if (userName.Length > 4 | userName != "student")
{
    Application.Exit();
}

不好意思:-(您需要使用布尔OR(
|
)运算符,而不是按位OR(
|

不过,正如我在评论中所说,你的逻辑对我来说并不一定有任何意义。它的写作方式永远是正确的:

  • 如果userName不是student,则该语句为true,应用程序退出

  • 如果userName是student,那么length>4,并且该语句再次为true(这将导致退出)

您可以将情况更改为:

if(username.Length > 4 && userName != "student")
{
    Application.Exit();
}
这在逻辑上更有意义,但因为我不知道你的意图,我不能保证它会按照你想要的方式工作

 if (userName.Length > 4 || userName.ToLower() != "student")
 {
     Application.Exit();
 }
试试这个。

虽然你应该使用
|
而不是
|
,但在这种情况下,它们会给出相同的结果。尽管其他答案都是向上投票,但将
|
改为
|
不能解决你的问题

您真正的问题是要检查的条件始终为真。您的用户名不是
student
,或者是
student
,并且长度也超过4个字符

当您的用户名只有3个字符时,它不等于student,因此程序将退出

根据你对你期望的描述,我认为你的意思是:

if (userName.Length > 4 && userName != "student")
{
    Application.Exit();
}

从您的要求来看,您对字符长度的检查是可忽略的,或者至少您没有提到您希望检查字符长度的原因。从您提供的示例中,我只需检查
if(userName!=“student”)
我看不出有必要进行额外的检查,这是可以在UI中强制执行的操作。

如果我没有错,则当任一条件为真时,您正试图进入If循环。 i、 例如,进入if循环

  • 当长度大于时
  • 用户名不应等于“学生”时
  • 像username=“ABC”这样的条件不是“student”,您的条件仍然正确并将进入。当username等于=“student”时,它仍将执行

    这里应该使用AND运算符,而不仅仅是OR运算符

    if (userName.Length > 4 & userName != "student")
      {
       Application.Exit();                
      }
    
    您也可以使用&&operator实现相同的结果。&operator与&&operator相同。
    当X=false且Y为true时,Y将根本不被计算。因为X已经为false。这也是一种称为短路计算的方法。

    如果(userName.Length>4 | | userName!=“student”)
    的含义更小?可能最好使用表单。关闭而不是应用程序。也退出(如果可能)@Andrey你是对的,这个语句的逻辑没有明确的意义…但是我看不到他/她的代码的其余部分来知道正确的逻辑是什么。我所能看到的是他显然使用了错误的运算符来进行比较。
    ToLower()
    可能是可忽略的,具体取决于用户界面接受输入的方式。此外,它可能是区分大小写的用户名…在我看来,更安全的是,有时你会想知道为什么我的条件没有命中,这只是大小写问题。@Random:仅当大小写不重要时。不要使用ToLower()执行不区分大小写的字符串比较--土耳其测试失败。使用String.Equals替换为不区分大小写的StringComparison参数!很好的一点,仍然想知道为什么人们两次否决了这个答案,至少给我一个理由这句话毫无意义,因为你的应用程序不会只在用户名为
    student
    的情况下退出。我需要的是&&如下所示,thanks all!:-)如果(userName.Length>4&&userName!=“student”){Application.Exit();}@Jamie,它同样是无用的<代码>“学生”。不管怎样,长度大于4:)您可以通过一些简单的用例自己解决这个问题,例如username=billy jean=>退出,username=student=>不退出,username=jon=>不退出。显然,您需要的长度大于4,而不是学生。此外,请使用userName.Equals(“学生”)。