Por que uma função VB.Net essa seqüência retorna somente realmente voltar um único caractere?

StackOverflow https://stackoverflow.com/questions/142697

  •  02-07-2019
  •  | 
  •  

Pergunta

Eu estou chamando uma função que retorna uma string, mas é apenas realmente retornando o primeiro caractere da string é suposto estar voltando.

Aqui está um exemplo de código para recriar o problema que estou enfrentando:

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

A chamada de função se parece com:

SomeStringValue = GetSomeStringValue(Value)

Porque é que este não retornando toda a cadeia?

Foi útil?

Solução

Nota: esta resposta foi originalmente escrito pelo OP, Kibbee, como uma auto-resposta. No entanto, ele foi escrito no corpo da questão, não como uma resposta em separado real. Uma vez que o OP se recusou repetidos pedidos por outros usuários, incluindo um moderador, para repassar, de acordo com regras do site, estou reposting-lo eu mesmo.

Depois de tentar uma centena de coisas diferentes, refatoração meu código, percorrendo o código no depurador muitas vezes, e até mesmo ter um olhar colega de trabalho para o problema, finalmente, em um flash de gênio, descobri a resposta.

Em algum momento, quando eu estava refatoração do código, eu mudei a função para se livrar do parâmetro Valor, deixando-a da seguinte forma:

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

No entanto, I esqueceram de remover o parâmetro que eu estava passando ao chamar a função:

SomeStringValue = GetSomeStringValue(Value)

O compilador não pode reclamar porque interpretou o que eu estava fazendo como chamar a função sem parênteses, que é um recurso legado dos dias VB6. Em seguida, o parâmetro Valor transformado no índice da matriz da string (aka matriz de caracteres) que foi retornado da função.

Então eu removi o parâmetro, e tudo funcionou bem:

SomeStringValue = GetSomeStringValue()

Estou postando isso para que outras pessoas vão reconhecer o problema quando / se eles nunca encontrá-lo, e são capazes de resolvê-lo muito mais rapidamente do que eu fiz. Demorou um tempo para eu resolver, e eu espero que eu possa salvar os outros algum tempo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top