首先,我的代码如下:
Dim eventType As Object = Nothing
eventType = GetEventType()
If Not (eventType Is Nothing) Then
If TypeOf eventType Is ClassSelectEvents Then
m_selectEvents = eventType ' Warning BC 42016: Implicit type conversion from 'Object' to 'ClassSelectEvents'.
End If
If TypeOf eventType Is ClassMouseEvents Then
m_mouseEvents = eventType ' Warning BC 42016: Implicit type conversion from 'Object' to 'ClassMouseEvents'.
End If
If TypeOf eventType Is ClassTriadEvents Then
m_triadEvents = eventType ' Warning BC 42016: Implicit type conversion from 'Object' to 'ClassTriadEvents'.
End If
End If
由于在编译器之后显示警告,因此如下所示对其进行了修改,但仍显示警告。
在第二个If语句中,我认为类型eventType为Object。那不一样吗 我的代码哪里错了请告诉我如何隐藏警告?
您要分配给m_selectEvents所有三个If块,最后两个应该是m_mouseEvents和m_triadEvents。
顺便说一句,这里没有意义TryCast,因为您的If声明已经保证了强制转换将起作用。您应该只使用DirectCast。如果您想使用,TryCast则可以这样做:
m_selectEvents = TryCast(eventType, ClassSelectEvents)
If m_selectEvents Is Nothing Then
m_mouseEvents = DirectCast(eventType, ClassMouseEvents)
If m_mouseEvents Is Nothing Then
m_triadEvents = DirectCast(eventType, ClassTriadEvents)
End If
End If
TryCastNothing如果投放失败,将会返回,因此您Nothing尝试投放后进行测试。如果您Nothing在使用后不进行测试,TryCast那么几乎可以肯定不应该使用TryCast它。编辑:嗯...我看到您在发布我的答案后更改TryCast为DirectCast。希望我的解释无论如何都会有所帮助。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。