加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 07:11:45 所属栏目:百科 来源:网络整理
导读:从MSDN复制并粘贴一些示例代码时,我想出了标题中的错误 – Variable ” hides a variable in an enclosing block, 我复制的只是try循环的一个非常基本的例子. 正如它在建议中所说的那样“这个错误的一个常见原因是在事件处理程序中使用Catch e As Exception.
从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中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读