在C#中等效的Visual Basic的And和Or?

Jak*_*les 7 c# vb.net

我知道这AndAlso相当于&&OrElse等同于||.但是,实现 Visual Basic AndOrC#的最简洁方法是什么

例如,请考虑以下VB.NET代码.该ValidateForControl方法执行一些验证并返回指定控件的状态是否有效.如果所有控件都有效,则整个输入表单有效.但是,即使一个控制无效(这要求操作员不要短路),每个控制也必须单独验证.Visual Basic的And运算符非常适合这种情况,但不幸的是,据我所知,C#中没有等效的运算符(&&短路).

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)
Run Code Online (Sandbox Code Playgroud)

另外,对于布尔值,^在C#中是否等同Xor于Visual Basic?

Bob*_*toe 7

And - > &

Or - > |

是的,Xor- >^


Ðаn*_*Ðаn 7

&&MSDN文档有一个样本,显示"常规AND" &和"短路AND" &&.

请务必评论您对&大多数C#程序员&&使用bools的期望.


您还可以编写And扩展方法

static class BooleanExtensions
{
    public static bool And(this bool lhs, bool rhs)
    {
        return lhs & rhs;
    }
}
Run Code Online (Sandbox Code Playgroud)

虽然你可能最好只是坚持使用原生&语法.请注意,AndAlso扩展方法没有用,因为rhs参数将作为方法调用的一部分进行评估.