bool isValid = false;
string username = "someadmin";
If( !String.IsNullOrEmpty(username) && !( username.IndexOf("admin") != -1)
isValid = true;
带有双重否定的第二部分让我感到高兴!
答案 0 :(得分:10)
我可以向您提出DeMorgan's Laws:
NOT (P OR Q) = (NOT P) AND (NOT Q)
NOT (P AND Q) = (NOT P) OR (NOT Q)
所以,你可以把它重写为:
if (!(String.IsNullOrEmpty(username) || username.IndexOf("admin") != -1)) {
isValid = true;
}
...因此删除了双重否定。
此外,您可以说:
if (String.IsNullOrEmpty(username) || username.IndexOf("admin") != -1) {
isValid = false;
}
...删除所有底片。
另外,你可以说:
isValid = !(String.IsNullOrEmpty(username) || username.IndexOf("admin") != -1));
......让它变得美观和紧凑。
答案 1 :(得分:4)
它将返回false
!String.IsNullOrEmpty(username) // this is true, the string is not NullOrEmpty
!(username.IndexOf("admin") != -1) // IndexOf is >= 0, so != 1 is true. But the first ! makes it false
因此IsValid将包含与开始时相同的值...
答案 2 :(得分:1)
它会返回false。
答案 3 :(得分:1)
简明语言版本:
if(用户名不为null或为空且用户名不包含“admin”) isValid = true;
答案 4 :(得分:0)
isValid
将是假的。
(Nitpick:此代码不会“返回”任何内容:它只是设置isValid
变量的值。)
答案 5 :(得分:0)
假。但我不明白这个问题?难道你不能执行这个吗?什么双重否定?该值只是被反转,括号清楚地表明了语句的执行顺序。
答案 6 :(得分:0)
isValid
中存储的值为false
。
答案 7 :(得分:0)
由于缺少paren,它会给你一个语法错误; - )
但严重的是,它会返回错误。
!String.IsNullOrEmpty(username)//如果用户名是非空且非空= =>真
username.IndexOf(“admin”)!= -1 //如果“admin”在用户名中找不到(不是-1)=>真
!(username.IndexOf(“admin”)!= -1)//如果“admin”未在username =>中找到假
因此,总结:不满足if语句的条件,因此isValid将保持为假。
PS:我不是c#程序员,但我认为当IndexOf(string)等于-1时,就意味着找不到。