我使用了Artinsoft的VB6到.NET向导将VB6应用程序转换为C#,并且在以前使用Err.Number的任何地方都会收到升级警告;
//升级_警告:(2081) Err.Number有了新的行为。
转换代码指的是;
Microsoft.VisualBasic.Information.Err().Number我还没搞清楚有什么区别。有人知道这可能是什么吗?还是忽略这个警告是安全的?
更新
对于将来偶然发现这个问题的人来说--一个警告词;在C# .NET应用程序中继续使用.NET是不安全的。该属性仍然可用,但未按预期在错误后填充。唯一按预期填充该错误的情况是,错误来自COM组件。
正常的错误--例如DB访问、IO操作等--不会给Err().Number带来任何价值,因此它的使用必须不幸地被重构。
奇怪的是,在VB .NET中,它仍然按预期工作,所以在决定转换目标语言时,可能要记住这一点。
发布于 2010-09-24 21:33:27
基本上,Microsoft.VisualBasic.Information.Err().Number支持Err.Number属性,它的工作原理与VB6中的基本相同,但是当升级到C#时,没有正确地填充Err.Number,您不应该依赖它。
唯一确定设置错误号的情况是,错误由COM互操作组件生成,在这种情况下,您可以检查异常的InnerException成员中的错误号。
您应该转换Err.Number异常的所有.NET用法,并通过结构化错误处理修改逻辑,使其行为正确。
问候
发布于 2010-09-17 20:50:32
从2000年10月开始的VB6 Err.Number描述
Returns or sets a numeric value specifying an error. Number is the Err object's default property. Read/write.
VB.NET Err.Number的MSDN描述
Returns or sets a numeric value specifying an error. Read/write.
来自10月2000 MSDN的备注是在VB.NET的在线版本中逐字复制的,包括示例。两人之间似乎没有什么不同。
发布于 2010-09-17 20:53:11
也许所用的数字已经改变了?
https://stackoverflow.com/questions/3736766
复制相似问题