在C#中,给出了两种方法
bool Action1(object Data);
bool Action2(object Data);
Run Code Online (Sandbox Code Playgroud)
在这样的if语句中使用:
if ( Action1(Data) || (Action2(Data) )
{
PerformOtherAction();
}
Run Code Online (Sandbox Code Playgroud)
会Action2()如果仍然被称为Action1()返回true,或者是这个由编译器优化阻止,因为它已经知道,表达式会true?
不,C#支持逻辑短路,所以如果Action1返回true则永远不会评估Action2.
这个简单的例子展示了C#如何处理逻辑短路:
using System;
class Program
{
static void Main()
{
if (True() || False()) { } // outputs just "true"
if (False() || True()) { } // outputs "false" and "true"
if (False() && True()) { } // outputs just "false"
if (True() && False()) { } // outputs "true" and "false"
}
static bool True()
{
Console.WriteLine("true");
return true;
}
static bool False()
{
Console.WriteLine("false");
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
只有在Action1()返回false时才会调用Action2()
这在概念上类似于
if (Action1(Data))
{
PerformOtherAction();
}
else if (Action2(Data))
{
PerformOtherAction();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
172 次 |
| 最近记录: |