由于下划线,VB.NET不会编译

时间:2011-02-23 14:52:34

标签: vb.net visual-studio-2010

我在VS2010上已经在同一台计算机上运行了几个月。

对包含以下代码的类没有代码更改:

Private Event ValueChanged(ByVal sender As Object, ByVal e As EventArgs) _
    Implements STI.Shared.UI.IEditField.ValueChanged

最近,当我编译时,我收到一个错误,我的类必须实现事件ValueChanged。enter image description here

当我删除下划线并将Implements部分放到同一行时,它会编译。

如果我撤消checkout并将其恢复为以前的代码,它就会编译。

这只是一种非常奇怪的行为,我想知道是否有人经历过这样的事情。

2 个答案:

答案 0 :(得分:1)

我可以重现错误,但只是略有技术性:

Public Interface ITest

    'Note here i have specified System.EventArgs
    Event ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs)  

End Interface

Public Class TestFail
    Implements ITest

    'And here I have only specified EventArgs, which is fine...
    Private Event ValueChanged(ByVal sender As Object, ByVal e As EventArgs) Implements ITest.ValueChanged

End Class

'Unless you declare another class called EventArgs in the same namespace...
Public Class EventArgs

End Class


Public Class TestWin
    Implements ITest

    'It should work if you just prefix the EventArgs with System though, like so:
    Private Event ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Implements ITest.ValueChanged

End Class

这是你将从中获得的错误:

Error List

答案 1 :(得分:0)

在这种情况下你不需要下划线。在这种情况下使用下划线甚至不是有效的语法。这看起来有点奇怪。看起来像Implements将被视为CLASS语句的参数,但事实并非如此。它被认为是一个上下文敏感的声明。