I know that AndAlso
is equivalent to &&
and OrElse
is equivalent to ||
. But what is the cleanest way to achieve the equivalent of Visual Basic's And
and Or
in C#?
For example, consider the following VB.NET code. The ValidateForControl
method performs some validation and returns whether the state of the specified control is valid. The entire input form is valid if all controls are valid. However, each control must be individually validated even if one is invalid (which requires the operator not to short-circuit). Visual Basic's And
operator is perfect for this situation, but unfortunately there's no equivalent operator in C# as far as I know (&&
short-circuits).
Return _
Me.ValidateForControl(Me.firstNameTextBox) And
Me.ValidateForControl(Me.middleNameTextBox) And
Me.ValidateForControl(Me.lastNameTextBox) And
Me.ValidateForControl(Me.streetAddressTextBox) And
Me.ValidateForControl(Me.cityTextBox) And
Me.ValidateForControl(Me.stateComboBox) And
Me.ValidateForControl(Me.zipCodeMaskedTextBox) And
Me.ValidateForControl(Me.phoneMaskedTextBox) And
Me.ValidateForControl(Me.emailAddressTextBox) And
Me.ValidateForControl(Me.checkInDateTimePicker) And
Me.ValidateForControl(Me.checkOutDateTimePicker) And
Me.ValidateForControl(Me.rentalUnitsGroupBox)
Also, for booleans, is ^
in C# equivalent to Xor
in Visual Basic?
And
--> &
Or
--> |
Yes, Xor
--> ^
The MSDN documentation for && has a sample which shows both "regular AND" &
and "short circuit AND" &&
.
Be sure to comment your use of &
as most C# programmers will be expecting &&
with bool
s.
You could also write an And
extension method
static class BooleanExtensions
{
public static bool And(this bool lhs, bool rhs)
{
return lhs & rhs;
}
}
although you're probably better off just sticking with the native &
syntax. Note that an AndAlso
extension method wouldn't be useful as the rhs
argument would get evaluated as part of the method call.
You just use &
for And
and |
for Or
. Both ^
and !=
are equivalent to Xor
(and each other), when both operands are booleans.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With