Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么返回字符串的VB.Net函数实际上只返回一个字符?_Vb.net_Syntax - Fatal编程技术网

为什么返回字符串的VB.Net函数实际上只返回一个字符?

为什么返回字符串的VB.Net函数实际上只返回一个字符?,vb.net,syntax,Vb.net,Syntax,我调用了一个返回字符串的函数,但实际上它只返回它应该返回的字符串的第一个字符 下面是一段示例代码,用于重新创建我遇到的问题: Public Function GetSomeStringValue(Value as Integer) As String ... Code Goes here Return Some_Multicharacter_string End Function 函数调用如下所示: SomeStringValue = GetSomeStringValue(Va

我调用了一个返回字符串的函数,但实际上它只返回它应该返回的字符串的第一个字符

下面是一段示例代码,用于重新创建我遇到的问题:

Public Function GetSomeStringValue(Value as Integer) As String
    ... Code Goes here
    Return Some_Multicharacter_string
End Function
函数调用如下所示:

SomeStringValue = GetSomeStringValue(Value)
为什么不返回整个字符串

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

在尝试了上百种不同的方法、重构代码、多次在调试器中单步执行代码,甚至让同事研究了这个问题之后,我终于在灵光一闪之间找到了答案

在重构代码的某个时候,我更改了函数以去掉Value参数,如下所示:

Public Function GetSomeStringValue() As String
    ... Code Goes here
    Return Some_Multicharacter_String
End Function
但是,我在调用函数时忽略了删除传入的参数:

SomeStringValue = GetSomeStringValue(Value)
编译器没有抱怨,因为它将我所做的解释为调用不带括号的函数,这是VB6的遗留功能。然后,值参数转换为从函数返回的字符串(也称为字符数组)的数组索引

所以我删除了参数,一切都正常:

SomeStringValue = GetSomeStringValue()

我发布这篇文章是为了让其他人在遇到问题时/如果他们遇到了问题,能够比我更快地解决问题。我花了相当长的时间来解决这个问题,我希望我能为其他人节省一些时间。

不喜欢参数和数组索引看起来相同的语言的另一个原因…哇,这是一个令人印象深刻的问题。这一切都是在选项strict和explicit打开时发生的吗?选项strict打开了,选项explicit关闭了。然而,在测试之后,当为字符串分配字符时,VB似乎并没有抱怨,即使option Explicit处于启用状态。