【问题标题】:String default parameter value issue after conversion from VB6 to VB.NetVB6转VB.Net后字符串默认参数值问题
【发布时间】:2012-03-09 15:25:38
【问题描述】:

我们有一个已从 VB6 转换为 VB.Net 的旧组件。

使用 Request("param") 从 ASPX 页面调用 VB 组件,以将可选参数传递给函数调用。这意味着如果参数不存在,则值为 null/nothing。

然后使用Parameters.Append 将参数添加到存储过程的 ADODB 调用中。

在缺少 VB6 时使用时,Request("param") 值在传递给 VB6 组件时被强制转换为空字符串。这意味着已满足 ADODB 调用(对于必需的参数)。

当代码被移植到 VB.Net 时,空 Request("param") 值现在作为空值传递(VB 什么都没有?),如果是 nothingParameters.Append 会跳过添加值。这会导致存储过程调用因缺少必需的参数而中断。

我的问题是:

如果我们将组件的函数参数更改为 optional 并具有 paramname as string = "" 默认值,那么 null/nothing 值是否会转换为空字符串,或者 null/nothing 的处理方式与参数的处理方式不同不见了?

对使用 null 这个词表示歉意,但我 99% 的工作都是 C# :)

【问题讨论】:

    标签: vb.net string vb6 parameter-passing optional-parameters


    【解决方案1】:

    如果您将Nothing 作为默认为空字符串的可选字符串参数的参数传递,则方法内的变量将具有Nothing 的值。它将 not 具有空字符串的值。它们是两个不同的值,因为 .Net 中的字符串是引用类型。您应该在方法顶部添加代码,以用空字符串替换这些参数的Nothing

    【讨论】:

    • +15:这是假设,感谢您的确认。我认为这意味着默认值只不过是一个编译器线索,所有参数实际上都已传递。我们将按照您的建议添加支票。谢谢
    • @HiTech 确切地说,缺少的参数是在编译时添加的
    猜你喜欢
    • 2013-07-16
    • 1970-01-01
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    相关资源
    最近更新 更多