我想发现并使用VB.Net等价来替换VB6中看到的VbNull
值,但我找不到代表该值的正确值。
Dim formatProvider As NumberFormatInfo =
DirectCast(CultureInfo.GetCultureInfo("es-ES").NumberFormat.Clone, NumberFormatInfo)
With formatProvider
.NumberDecimalSeparator = Microsoft.VisualBasic.vbNull
End With
Dim pi As String = Math.PI.ToString(String.Empty, formatProvider)
NumberDecimalSeparator
属性不接受空值,但它也会接受vbNull
值并且它完美地工作(分隔符被删除),所以...我想我可以重现使用.Net类库的结果相同,以避免使用VB6的东西。
我已尝试将vbNull
替换为其他值,但由于我上面提到的属性的空白限制,所有人都会例外:
""
String.Empty
ControlChars.NullChar()
DBNull.Value.ToString
Nothing
更新
我也尝试过这些假设的解决方案,其中任何一个抛出空值的异常,但它不会给我预期的结果,因为使用它作为分隔符来格式化十进制数字,数字被打印破碎。
Convert.ToChar(0)
Char.ConvertFromUtf32(0)
New String(Char.ConvertFromUtf32(0))
答案 0 :(得分:3)
触发器是正确的vbNull是一个常量,但它的值是这样定义的:Public Const vbNull As VariantType = VariantType.Null
答案 1 :(得分:2)
vbnull是一种数据类型,而不是您的想法。从对象查看器(VB6或Office VBA编辑器按F2)
Const vbNull = 1
Member of VBA.VbVarType
Return value constant for VarType
你可能会把它与之混淆的事情
Const vbNullChar = ""
Member of VBA.Constants
Basic constant for a single Null character (ASCII value 0); equivalent to Chr$(0)
Const vbNullString = ""
Member of VBA.Constants
Constant for use when calling external procedures requiring a string whose value is zero