我正在努力将遗留应用程序从MS Access / VBA转换为C#。说得客气一点,遗留代码的质量存在一些问题。 VBA代码中至少有一个点导致可能除以零(以及可能除以零,但我可以处理)。
Access / VBA如何处理除以?在大多数编程语言中,除以null的任何内容都将导致null,但VBA不是“大多数编程语言”。我的假设是,除以null应该导致null,但我想确定。我试图尽可能地模仿原始应用程序的行为,所以我需要知道此操作在Access / VBA中的行为。
答案 0 :(得分:5)
我来这里参加派对很晚,但只是为了给你一些明确的东西......
根据微软的VBA规范(MS-VBAL)section 5.6.9.3:
•对于二进制算术运算符,除非另有说明,否则根据操作数的值类型确定有效值类型如下:
+------------------------------------------------+------------------------------------------------+----------------------+
| Left Operand Value Type | Right Operand Value Type | Effective Value Type |
+------------------------------------------------+------------------------------------------------+----------------------+
| Null | Any numeric type, String, Date, Empty, or Null | Null |
|------------------------------------------------|------------------------------------------------|----------------------|
| Any numeric type, String, Date, Empty, or Null | Null | Null |
+------------------------------------------------+------------------------------------------------+----------------------+
(请注意"二进制"在这种情况下是指这些运算符采用两个操作数,与"一元"不同的一个操作数)
答案 1 :(得分:3)
Null是一个有趣的价值。当您尝试将Null值分配给数据类型时,VBA编译器将抛出错误"无效使用Null",通常使用Nz()函数或简短的If Else结构。但是,对Null值执行的任何算术运算都将导致Null。
? 75 + Null
Null
? 56 * Null
Null
? 6.3 / Null
Null
? True = Null
Null
所以考虑到这种情况,是的答案是空的!