我知道AndAlso等同于&&,OrElse等价于||。但是,在And中实现Visual的And和Or最干净的方法是什么呢?
例如,考虑下面的VB.NET代码。ValidateForControl方法执行一些验证,并返回指定控件的状态是否有效。如果所有控件都有效,则整个输入表单都是有效的。然而,每个控制必须单独验证,即使一个是无效的(这要求操作者不短路)。Visual的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)另外,对于布尔人,^在C#中是否等同于Visual中的Xor?
发布于 2010-10-14 04:18:19
And -> &
Or -> |
是的,Xor -> ^
发布于 2010-10-14 04:24:26
MSDN文档for &&有一个示例,显示“规则和”&和“短路”和“&&”。
请务必评论您对&的使用,因为大多数C#程序员都希望使用bool的&&。
您还可以编写And扩展方法。
static class BooleanExtensions
{
public static bool And(this bool lhs, bool rhs)
{
return lhs & rhs;
}
}尽管您最好还是坚持使用本机&语法。请注意,AndAlso扩展方法不会有用,因为rhs参数将作为方法调用的一部分进行计算。
发布于 2010-10-14 04:18:07
您只需将&用于And,|用于Or。当两个操作数都是布尔值时,^和!=都等价于Xor (以及彼此)。
https://stackoverflow.com/questions/3930042
复制相似问题