2008-09-27 36 views
33

我正在调用一个返回字符串的函数,但它实际上只返回它应该返回的字符串的第一个字符。为什么返回字符串的VB.Net函数实际上只返回单个字符?

下面是一个示例代码片段重现这个问题我遇到:

Public Function GetSomeStringValue(Value as Integer) As String 
    ... Code Goes here 
    Return Some_Multicharacter_string 
End Function 

函数调用看起来像:

SomeStringValue = GetSomeStringValue(Value) 

这是为什么没有返回整个字符串?

+1

另一个不喜欢参数和数组索引看起来相同的语言的原因... – 2008-09-27 01:26:18

回答

12

注意:此答案最初由OP,Kibbee编写,作为自我回答。但是,它是写在问题的主体中,而不是作为一个单独的答案。由于OP拒绝包括主持人在内的其他用户的重复请求根据网站规则重新发布,因此我自己重新发布。

尝试上百种不同的事情,重构我的代码,通过调试器分步执行代码很多次,甚至有同事查问题后,我终于在一个天才的闪光,发现答案。

在当我重构代码的某个时刻,我改变了摆脱价值参数的功能,把它当作如下:

Public Function GetSomeStringValue() As String 
    ... Code Goes here 
    Return Some_Multicharacter_String 
End Function 

不过,我忘了删除,我是传递参数调用函数时:

SomeStringValue = GetSomeStringValue(Value) 

编译器并没有抱怨,因为它解释我在做什么与调用不带括号的功能,这是从VB6的天遗留功能。然后,将Value参数转换为函数返回的字符串(又名字符数组)的数组索引。

所以我删除了参数,一切运行良好:

SomeStringValue = GetSomeStringValue() 

我张贴这让其他人会认识到这个问题时,/如果他们遇到它,并能多解决问题比我更快。我花了好一段时间才解决,我希望我可以节省一些时间。

相关问题