programing

왜 VB가.문자열만 반환하는 Net 함수는 실제로 한 글자만 반환합니까?

subpage 2023. 6. 13. 22:17
반응형

왜 VB가.문자열만 반환하는 Net 함수는 실제로 한 글자만 반환합니까?

문자열을 반환하는 함수를 호출하고 있지만, 반환해야 할 문자열의 첫 번째 문자만 반환합니다.

다음은 현재 발생하고 있는 문제를 재현하기 위한 코드 샘플입니다.

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

함수 호출은 다음과 같습니다.

SomeStringValue = GetSomeStringValue(Value)

전체 문자열을 반환하지 않는 이유는 무엇입니까?

참고: 이 답변은 원래 OP인 키비가 자가 답변으로 작성한 것입니다.다만 실제 별도의 답변이 아닌 질문 본문에 적혀 있었습니다.OP가 주최자를 포함한 다른 사용자들의 사이트 규칙에 따라 재게시 요청을 거부했기 때문에, 제가 직접 재게시합니다.

제 코드를 리팩터링하고, 디버거의 코드를 여러 번 훑어보고, 심지어 동료에게 문제를 조사하게 한 후, 저는 천재적인 순간에 마침내 답을 발견했습니다.

코드를 리팩터링할 때 Value 매개변수를 제거하기 위해 함수를 변경하여 다음과 같이 남겼습니다.

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

그러나 함수를 호출할 때 전달하던 매개 변수를 제거하지 않았습니다.

SomeStringValue = GetSomeStringValue(Value)

컴파일러는 VB6일의 레거시 기능인 괄호 없이 함수를 호출하는 것으로 해석했기 때문에 불평하지 않았습니다.그런 다음 Value 매개 변수가 함수에서 반환된 문자열(문자 배열)의 배열 인덱스로 변환됩니다.

그래서 매개 변수를 제거했고 모든 것이 잘 작동했습니다.

SomeStringValue = GetSomeStringValue()

저는 다른 사람들이 문제에 직면했을 때 문제를 인식하고 저보다 훨씬 더 빨리 해결할 수 있도록 이 글을 올립니다.제가 해결하는 데 시간이 꽤 걸렸으며, 다른 사람들을 구할 수 있는 시간이 있었으면 좋겠습니다.

언급URL : https://stackoverflow.com/questions/142697/why-does-a-vb-net-function-that-returns-string-only-actually-return-a-single-cha

반응형