【发布时间】:2015-02-27 02:39:34
【问题描述】:
[使用真实代码更新,因此问题可重现] 我有以下声明:
<Test()>
Public Sub SelectCaseTest()
Dim foo As String = "AccrualAmount"
Dim result As Boolean = False
Select Case foo
Case "AccrualAmount"
result = True
End Select
Assert.IsTrue(result)
End Sub
知道了:
Expected: True
But was: False
at NUnit.Framework.Assert.That(Object actual, IResolveConstraint expression, String message, Object[] args)
at NUnit.Framework.Assert.IsTrue(Boolean condition)
看起来非常简单明了。出于某种原因,它没有进入选择案例。如果我在调试器中使用该问题案例执行 foo.Equals("AccrualAmount") ,则它返回 true。当 VB.NET 评估 "case "AccrualAmount" " 语句时,幕后会发生什么?为什么它与.Equals评估的结果不一致?
【问题讨论】:
-
如果您向我们提供更多真实代码,我们可以为您提供帮助。
-
我很想提供更多代码,但代码库很大,我正在寻找关于我应该注意什么的指针。我要寻找的一件事是“选项比较”。但我不明白为什么 .Equals() 返回正确答案但 select case ... 没有。有什么想法吗?
-
@Denis 你不需要粘贴整个代码库。足以让我们重现它。正如我在下面指出的,您的示例代码不会失败。
-
似乎我现在可以在单元测试中重现这一点(更新了问题)
-
再一次,这个单元测试通过了。一定有另一个
Case使这个短路?