Warum wird ein VB.Net-Funktion, die Zeichenfolge zurückgibt, nur tatsächlich ein einzelnes Zeichen zurückgeben?

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

  •  02-07-2019
  •  | 
  •  

Frage

Ich rufe eine Funktion, die einen String zurückgibt, aber es ist eigentlich nur das erste Zeichen des Strings zurückkehr es soll zurückkommen.

Hier ist ein Beispiel Stück Code, das Problem neu erstellen Ich erlebe:

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

Der Funktionsaufruf wie folgt aussieht:

SomeStringValue = GetSomeStringValue(Value)

Warum ist dies die gesamte Zeichenfolge nicht zurückkehrt?

War es hilfreich?

Lösung

  

Hinweis: diese Antwort ursprünglich von der OP, Kibbee, als selbst Antwort geschrieben wurde. Allerdings wurde es in dem Körper der Frage geschrieben, nicht als tatsächliche getrennte Antwort. Da die OP von anderen Benutzern wiederholten Anfragen abgelehnt hat, einschließlich eines Moderators gemäß Aufstellungsortrichtlinien umbuchen, ich bin reposting es selbst.

Nach hundert verschiedenen Dinge zu versuchen, meinen Code Refactoring, im Debugger viele Male durch den Code schrittweise und sogar einen Mitarbeiter Einblick in das Problem ist, ich in einem Geistesblitz schließlich entdeckt, die Antwort.

An einem gewissen Punkt, wenn ich den Code wurde Refactoring, änderte ich die Funktion des Value-Parameter, um loszuwerden, so dass es wie folgt:

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

Allerdings habe ich vernachlässigte die Parameter zu entfernen, die ich in vorging beim Aufruf der Funktion:

SomeStringValue = GetSomeStringValue(Value)

Der Compiler beschwerte sich nicht, weil es interpretiert, was ich als Aufruf der Funktion ohne Klammern tat, was ein Vermächtnis Feature von den VB6 Tage. Dann transformiert die Parameter Value in den Array-Index der Zeichenfolge (auch bekannt als Zeichen-Array), das von der Funktion zurückgegeben wurde.

So entfernte ich den Parameter, und alles hat gut funktioniert:

SomeStringValue = GetSomeStringValue()

Ich bin dieses Posting, so dass andere Leute das Problem erkennen, wenn / falls sie es jemals begegnen, und sind in der Lage es viel mehr zu lösen schneller als ich. Es dauerte eine ganze Weile für mich zu lösen, und ich hoffe, dass ich andere einige Zeit sparen kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top