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