[更新真实代码所以问题是可以重复的] 我有以下声明:
<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评估的结果?
答案 0 :(得分:1)
您的代码必须有其他内容,这里没有显示。我假设此Select...Case
语句位于Function
或Sub
内?因为这有效:
.aspx
页面:
<p runat="server" id="poutput"></p>
.aspx.vb
代码隐藏:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
Dim foo As String = example()
poutput.InnerText = foo
End If
End Sub
Protected Function example() As String
Dim SomeVar As String
SomeVar = "hello"
Select Case SomeVar
Case "hello"
Return "got it"
End Select
Return "no match"
End Function
您可以展示更多信息来帮助我们重现您的错误吗?
答案 1 :(得分:0)
在检查完所有“选项比较”设置后,尝试以不同的方式重写它等等。我不得不在某处复制单元测试,所以我暂时把它放到Notepad ++中。看到了这个:
神圣的废话,简直不敢相信我的运气!在“案例”陈述结束时爱美国的象征。这里要学到的教训就是如果你看到像这样奇怪的东西,就把你的代码从VS贴到Notepad ++上。现在它是有道理的。有人必须从某个地方复制/粘贴案例值。看起来美国是十六进制值F1。现在我只需要确定复制/粘贴的位置,这样就不会再发生了。