VB6的是vbNull相当于在VB.Net?(VB6's vbNull equivalent

2019-09-30 08:30发布

我想发现和使用VB.Net相当于更换VbNull在VB6中看到价值,但我找不到,表示空值正确的值。

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酒店不接受空值,但它accpets的vbNull价值,以及和它的作品perfectlly(隔板被删除),所以...我想,我可以使用.NET类库,以避免重现相同的结果度假村VB6的东西。

我试图取代vbNull与其他价值观,但都由于我上面提到的属性的空虚限制给出一个例外:

""
String.Empty
ControlChars.NullChar()
DBNull.Value.ToString
Nothing

UPDATE

我也尝试了这些解决方案的设想,所有的这些抛出的空值的异常,而是它不给我预期的结果,因为使用此作为分隔符来格式化小数号码是印刷破碎。

Convert.ToChar(0)
Char.ConvertFromUtf32(0)
New String(Char.ConvertFromUtf32(0))

来源: VB.NET -空字符串

Answer 1:

触发器是正确的是vbNull是一个常数,但它的值被定义正是如此: Public Const vbNull As VariantType = VariantType.Null

请参阅微软参考源



Answer 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


文章来源: VB6's vbNull equivalent in VB.Net?