当前位置 : 主页 > 编程语言 > c语言 >

.net – 变量”隐藏了一个封闭块中的变量

来源:互联网 收集:自由互联 发布时间:2021-06-24
从MSDN复制并粘贴一些示例代码时,我想出了标题中的错误 – Variable ” hides a variable in an enclosing block, 我复制的只是try循环的一个非常基本的例子. 正如它在建议中所说的那样“这个错误
从MSDN复制并粘贴一些示例代码时,我想出了标题中的错误 – Variable ” hides a variable in an enclosing block,

我复制的只是try循环的一个非常基本的例子.

正如它在建议中所说的那样“这个错误的一个常见原因是在事件处理程序中使用Catch e As Exception.如果是这种情况,请将Catch块变量命名为ex而不是e.”

所以,我这样做,将e改为ex并且它有效,但是,我不明白为什么这不会导致同样的错误.

有人可以更好地解释错误是什么以及为什么导致它,而前者不是?

编辑 –

代码示例…

Try
    Catch e As Exception
        msgbox(e.Message)
    End Try

.

Try
    Catch ex As Exception
        msgbox(ex.Message)
    End Try

我不明白的是为什么第一个导致问题,而第二个不导致问题,对我而言,就像……使用上面的苹果,下面的苹果 – 说你不能在两个地方使用相同的东西然后将两者都改为橙子并突然让它发挥作用.当然第二个与第一个相同.

您可能希望粘贴错误的完整代码以进行确认,但我认为事件处理程序定义了一个名为“e”的参数.然后,当您放入catch块时,它也会尝试定义“e”,从而导致错误.当然,当catch定义“ex”而不是“e”时,没有名称冲突发生,所以它的工作原理.

编辑:编辑以添加更清晰的示例,我假设是breoken代码.

我假设您的破解代码如下:

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
    Try
    Catch e As Exception
        msgbox(e.Message)
    End Try
End Sub

您可以看到e的两个声明,一个在ByVal e As System.EventArgs中,另一个在Catch e As Exception中.

网友评论