This may be stupid.but i have a simple doubt Suppose i have the following check in a function
bool Validate(string a , string b)
{
if(a == null || b == null)
In this case (with bool
arguments) the |
operator is not a bitwise operator. It's just a non-short-circuiting version of the logical or
(||
).
The same goes for &
vs. &&
- it's just a non-short-circuiting version of logical and
.
The difference can be seen with side-effects, for example in
bool Check()
{
Console.WriteLine("Evaluated!");
return true;
}
// Short-circuits, only evaluates the left argument.
if (Check() || Check()) { ... }
// vs.
// No short circuit, evaluates both.
if (Check() | Check()) { ... }