我知道这AndAlso相当于&&和OrElse等同于||.但是,实现 Visual Basic And和OrC#的最简洁方法是什么?
例如,请考虑以下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?
&&的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参数将作为方法调用的一部分进行评估.