我使用了Artinsoft的VB6到.NET向导将VB6应用程序转换为C#,并且我在以前使用Err.Number的任何地方都收到了升级警告;
// UPGRADE_WARNING:(2081)Err.Number 有一种新的行为。
转换后的代码是指;
Microsoft.VisualBasic.Information.Err().Number
我没有运气找出差异是什么。有谁知道它可能是什么,或者忽略这个警告是否安全?
更新
对于任何在将来偶然发现这个问题的人 - 一句警告;在C#.NET应用程序中继续使用Err.Number是不安全的。该属性仍然可用,但是在错误发生后没有按预期填充。如果错误来自COM组件,则唯一可以按预期填充它的情况。
正常错误,例如数据库访问,IO操作等不会给Err()。Number赋值,所以不幸的是它的使用必须重构。
奇怪的是,在VB .NET中,它仍然按预期工作,因此在决定转换的目标语言时,可能需要记住这一点。
答案 0 :(得分:3)
基本上VB.NET支持Err.Number属性,它的工作原理与VB6完全相同,但是当升级到C#时,Microsoft.VisualBasic.Information.Err()。数字没有正确填充,并且你不应该依赖它。
唯一确定错误号的方案是,当COM互操作组件生成错误时,在这种情况下,您可以检查异常的InnerException成员中的错误号。
您应该转换.NET异常的所有Err.Number用法,并修改逻辑以使用结构化错误处理正确运行。
问候
答案 1 :(得分:1)
2000年10月MSDN的VB6 Err.Number说明:
Returns or sets a numeric value specifying an error. Number is the Err object's default property. Read/write.
来自MSDN的VB.NET Err.Number描述:
Returns or sets a numeric value specifying an error. Read/write.
2000年10月MSDN的评论在VB.NET的在线版本中逐字逐句复制,包括示例。两者之间似乎没有什么不同。
答案 2 :(得分:0)
也许使用过的数字已经改变了?