【发布时间】:2013-09-10 11:55:47
【问题描述】:
我有一个 If 语句来检查许多事情(BaySlots() 是一个字符串数组)。
If (Not BaySlots.Contains(Not String.Empty)) OrElse
(Not BayAcId = 0 AndAlso Not BayAcId = acProgramId _
AndAlso overrideSetting = False) Then
我虽然第一个条件的 Array.Contains 方法足以告诉我数组是否只包含空字符串,但它给出了 InvalidCastException: Conversion from string "" to type Long is not valid 所以我猜 Not String.Empty 实际上被评估为尝试的东西转换为 Long。
有没有更好的方法可以用来改造这个 If,这样我仍然可以在数组中只包含空字符串的测试,作为 If 的一部分,而不必添加前面的循环来测试BaySlots() 的每个索引是否为空字符串?
我认为除了循环之外可能应该有一些测试方法,因为这将是相对大量的工作来测试是否没有内容。
谢谢
PS 只是为了澄清这一点不是为了测试数组是否具有零维或等于 Nothing,而是它包含的字符串都等于 String.Empty。
【问题讨论】:
-
如果数组中的所有元素都是
Nothing,您希望它返回true,还是只希望它们都是非空字符串对象时返回true? -
我希望整个第一个条件:Not BaySlots.Contains(Not String.Empty)) 评估为真。它基本上是说“如果没有不为空的字符串”或同样的“如果 all 字符串为空”
-
在这种情况下,看起来像黑子的第二个解决方案,使用
All将完全符合您的要求。