关于C#:相邻两个管道pipes (||)是什么意思?


What does it mean when there are two pipes (||) next to each other?

本问题已经有最佳答案,请猛点这里访问。

使用中的一个例子是…

1
if (temp < 30 || temp > 90) { MessageBox.Show("Error"); }

两个管道()在一起意味着什么?


一个管道是逻辑或运算符,它总是计算两个操作数。

两个管道是短路逻辑或运算符,它仅在第一个管道是false时计算第二个操作数。如果第二个操作数是一个很重的函数,而您不想不必要地计算它,或者它可能引发异常,例如:

1
2
3
if(myList == null || myList.Count == 0){
    //do something
}

在本例中,如果myListnull,则不会计算第二个操作数。如果我们使用一个管道,则将计算第二个操作数并抛出异常,因为myListnull


C语言中的一个管|(和许多其他语言[除了单管用作位逻辑运算符,例如Java)]是逻辑运算符或。

双管||为快捷方式或。这意味着如果第一个是真的,那么操作将自动退出,因为有一个条件已经是真的。所以,或者必须是真的。(因此,单个|意味着它将在评估前首先检查所有条件,这是一种比较慢且通常不有用的方法)。

在您的示例中:

1
if (temp < 30 || temp > 90) { MessageBox.Show("Error"); }
  • temp < 30:第一条件
  • ||:逻辑或
  • temp > 90:第二条件

这意味着,如果(第一个条件)或(第二个条件)为真,则显示"错误"。