Dav*_*Caz 5 .net vb6 vb6-migration
我必须使用旧的 VS2008 转换工具将一些 VB6 代码转换为 VB.net。当不确定原始代码和转换后的代码是否等效时,该工具可以帮助插入警告注释。其中一个例子是:
UPGRADE_WARNING:Mod 有新行为
单击了解更多信息:'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="9B7D5ADD-D8FE-4819-A36C-6DEDAF088CC7"'
ms-help://...据我所知,这个“链接”不再起作用。我也无法在网络上找到任何引用该链接的内容。
这个警告实际上指的是什么?功能上有什么区别mod?
首先,这解释了语言变化本身。其次解决有关链接的问题ms-help。
https://www.vbmigration.com/documentation/chapter3.aspx上给出了解释:
\n\n\n取模运算符
\nVB6\xe2\x80\x99s Mod 运算符自动将其操作数转换为整数值并返回整数除法的余数:
\nRun Code Online (Sandbox Code Playgroud)\nDim d As Double, i As Integer\nd = 1.8: i = 11\nDebug.Print i Mod d \' Displays 1, because it rounds up 1.8 to 2\nVB.NET 和 C# 不会将\xe2\x80\x99 转换为整数,并且如果两个操作数中的任何一个的类型为 Single\nDouble,则返回浮点除法的余数。
\n
同一页面继续建议,通过添加调用,CInt()您可以重现原始行为,例如:
\n\nRun Code Online (Sandbox Code Playgroud)\nDebug.WriteLine(i Mod CInt(d))\n
官方 VB 文档证实了这一点。
\nVB6:
\n\n\n评论
\n模数或余数运算符将 number1 除以 number2(将浮点数舍入为整数)并仅返回余数作为结果。
\n
(实际上是VBA文档......)
\n\n\n\n评论
\n如果 number1 或 number2 是浮点值,则返回除法的浮点余数。结果的数据类型是可以容纳由数据类型 number1 和 number2 相除得到的所有可能值的最小数据类型。
\n
请注意,ms-help如果您仍然安装了 VS2008,这些链接实际上会起作用。它会调出内置的本地帮助 GUI。不确定这些链接何时停止工作,但我认为至少到 VS2015 时它们没有停止工作。
对于这个有关Mod帮助系统的特殊警告,有这样的说法:
\n\n模组操作员
\n在 Visual Basic 6.0 中,
\nMod运算符接受任何数值表达式\n并且结果始终以整数形式返回。在 Visual Basic 2008 中,
\nMod运算符不再接受变体,并且\n如果任一操作数是浮点数,\n结果将是浮点数。
恕我直言,这实际上并不是对不同之处的非常精确的描述。特别地,没有充分强调除法结果已经从总是执行整数除法改变。它只提到返回结果是一个整数。
\n上面的信息比较全面。
\n为了完整起见,它还添加了:
\n\n\n接下来做什么
\n如果在升级过程中变体已转换为对象,请将其转换为适当的数字数据类型。
\n如果任一操作数是浮点数,请修改结果的数据类型,或修改代码以
\nCShort在使用 Mod 运算符之前使用函数转换操作数。
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |