C# - OR是否像其他一样?

Kap*_*aG3 0 c#

可能重复:是否
会执行逻辑表达式中的所有方法?

让我解释一下:假设我们有两个代码:

foreach(Object o in Objs)
    if(o is Class1 || o is Class2)
        DoSomething();
Run Code Online (Sandbox Code Playgroud)

__

foreach(Object o in Objs)
    if(o is Class1)
        DoSomething();
    else if(o is Class2)
        DoSomething();
Run Code Online (Sandbox Code Playgroud)

当然,现今的或在这种情况下更好,但我的问题是不同的,只是出于好奇:在第一种情况下o是类型Class 1的,该编译器停止并运行代码或它检查接下来会发生什么呢?它会在第二种情况下这样做.

Mar*_*ell 6

||是短路的,这意味着:如果第一个参数返回true,则不计算第二个参数.通过这种方式,是的,它大致相当于你的第二个例子,但更简洁.