【发布时间】:2010-10-14 04:15:41
【问题描述】:
我知道AndAlso 等价于&& 而OrElse 等价于||。但是在 C# 中实现与 Visual Basic 的 And 和 Or 等效的最简洁方法是什么?
例如,考虑以下 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)
另外,对于布尔值,C# 中的 ^ 是否等同于 Visual Basic 中的 Xor?
【问题讨论】:
-
+1 最后是一个很好的用户案例,其中保证了非短路操作符
-
你写过“每个控件都必须经过验证,即使一个控件是 valid ”。即使您短路也会发生这种情况。
AndAlso,&&仅在操作数之一为 False 时短路。您的意思是“即使一个控件无效也必须验证每个控件” -
@MarkJ 是的,你是对的,谢谢。 ;)