Gon*_*ing 5 vb.net string vb6 parameter-passing optional-parameters
我们有一个已从VB6转换为VB.Net的遗留组件.
使用Request("param")从ASPX页面调用VB组件,以将可选参数传递给函数调用.这意味着如果参数不存在,则值为null/nothing.
然后使用参数将参数添加到商店过程的ADODB调用中Parameters.Append.
当从VB6缺失使用时,Request("param")值在传递给VB6组件时被强制转换为空字符串.这意味着满足ADODB调用(对于所需参数).
当代码被移植到VB.Net时,null Request("param")值现在作为空值传递(VB什么都没有?)并Parameters.Append跳过添加值(如果是)nothing.这导致存储过程调用中断,因为缺少必需的参数.
如果我们将组件的函数参数更改为optional并具有paramname as string = ""默认值,那么null/nothing值是否会转换为空字符串,或者是null /什么不会被简单地丢失的参数处理?
对使用null这个术语表示歉意,但99%的工作是C#:)
如果Nothing作为可选字符串参数的参数传递,默认为空字符串,则方法内的变量的值为Nothing.它不具有空字符串的值.它们是两个不同的值,因为.Net中的字符串是引用类型.您应该在方法的顶部添加代码,Nothing以使用空字符串替换这些参数.