VB6在VB.Net中的vbNull等效?

时间:2014-10-17 09:50:36

标签: .net vb.net winforms visual-studio vb6

我想发现并使用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))

来源:VB.NET - string of nulls

2 个答案:

答案 0 :(得分:3)

触发器是正确的vbNull是一个常量,但它的值是这样定义的:Public Const vbNull As VariantType = VariantType.Null

请参阅Microsoft Reference Source

答案 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