c# - 为什么 or 运算符在使用 "not equals"时不能在 if 语句中工作?

标签 c# equals operator-keyword

我对此有点困惑。如果系统的当前用户名是 != Administrator 或 Administrator2,我想隐藏一个按钮,但实现我想要的目标的唯一方法是使用 && 而不是||

 string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;

        if
            (userName != @"PC\Administrator" && userName != @"PC\Administrator2")
        {              
            button2.Hide();
        }

但是,在我的表单中打开 button2 的另一个地方,如果我使用 == 它似乎可以工作?

  string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
  var adminform = new AdminForm();

      if  (userName == @"PC\Administrator" || userName == @"PC\Administrator2")
        {
            adminform.Show();
        }

知道为什么在第一个示例中使用 != 时我不能使用 || 吗?

最佳答案

De Morgan's Laws for Boolean operations是程序员需要深入理解的一项重要技能。

在您的情况下,当否定时您需要额外的括号来正确排序操作,或者在您的情况下将 || 更改为 &&。要使用 || 你会放

if (!(userName == @"PC\Administrator" || userName == @"PC\Administrator2"))

关于c# - 为什么 or 运算符在使用 "not equals"时不能在 if 语句中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28833858/

相关文章:

java - 是否可以在 java 中制作类似 Comparator 但用于实现自定义 equals() 和 hashCode()

c -++ 的优先级高于逻辑运算符?

c# - asp.net gridview 中的动态链接

c# - Parallel.For 中的变量

c# - 本地测试 web api 时出现 404 not found 错误

java - 在 JAVA 中读取文件,equals 不起作用

c# - 尝试使用工具 Effort : The type date is not a qualified namespace 运行单元测试时 MVC4 应用程序出错

java - 不需要将代码片段转换为另一种语言 = op?

c++ - 比较类的 vector 时如何定义运算符 ==?

java - java中的比较运算符对象