VB in VS 2015.此代码失败。当代码停止时,布尔值和整数都没有值。错误消息是“BC30451:未声明。它可能无法访问,因为......”。也许这是微软的方式告诉我,我是一个不在C#编码的白痴?任何人都知道为什么会失败?
Shared Sub test()
Dim N As Boolean = False
Dim i As Integer = 5
Stop ' Neither N nor I are accessible
End Sub
[编辑 - 添加评论代码]
Private Sub cmdSaveAll_Click(sender As Object, e As EventArgs) Handles cmdSave1.Click
Dim N As Boolean = False
Dim i As Integer = 5
Dim ss As String = "xxxx"
Stop ' Neither N nor I nor ss are accessible
End Sub
答案 0 :(得分:1)
如果您从不使用变量,Visual Studio足够聪明,不会将其添加到堆栈中。对于从未在程序中调用的子例程也是如此 - 它们不会添加到可执行文件中。
试试这个:
Shared Sub test()
Dim N As Boolean = False
Dim i As Integer = 5
If N Then
Console.WriteLine("This line will never be hit.")
Else
Console.WriteLine(i)
End If
End Sub
或者,您可以在例程之外声明变量,以便它们在其他地方具有范围。
Private N As Boolean
Private i As Integer
Private Sub cmdSaveAll_Click(sender As Object, e As EventArgs) Handles cmdSave1.Click
N = False
i = 5
End Sub
Shared Sub test()
If N Then
Console.WriteLine("This line will be hit if N is changed in another method.")
Else
Console.WriteLine(i)
End If
End Sub
答案 1 :(得分:0)
我没有解决方案,但问题必须出在正在开发的应用程序或2015年的错误中。我创建了一个新项目,这段代码运行得很好。
新信息:我处于发布模式。切换到调试修复了问题。然而,我已经在发布模式下开发了相当长的一段时间,所以我不知道这是一个错误还是意图,我以前从未遇到过这个问题。嗯,最奇怪的。