2012-04-12 8 views
0

Ich habe eine einfache Frage zur String-Verkettung. Folgendes ist der Code. Ich möchte fragen, warum s6 = "abcde" und nicht "akcde"? Ich habe den s2-Wert auf "k" geändert.String-Verkettung: Der letzte String-Wert entspricht nicht dem letzten Wert.

Public Class Form1 
    Public s1 As String = "a" 
    Public s2 As String = "b" 
    Public s3 As String = "c" 
    Public s4 As String = "d" 
    Public s5 As String = "e" 
    Public s6 As String = "" 
    Public s7 As String = "k" 

    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click 
     s6 = s1 & s2 & s3 & s4 & s5 
     s2 = s7 
     MessageBox.Show(s6) 's6 = abcde 

    End Sub 
End Class 
+0

Sie die Zeichenfolge verketten sein abcde und nicht akcde s6 = s1 & s2 & s3 & s4 & s5 –

Antwort

1

, weil, wenn Sie den Wert s6 zuweisen - eine neue Zeichenfolge auf der Grundlage der Verkettung der s1 - s5 erzeugt wird - Ändern s2 danach hat keinen Einfluss auf den Wert in s6

0

Wenn Sie dies tun :

s6 = s1 & s2 & s3 & s4 & s5 

s6 enthält abcde, eine neue Zeichenfolge, die aus der Verkettung geführt. Sie ändern dann den Wert der Variablen s2 - dies ändert sich nicht s6.

+0

@Dow nvoter - auf Kommentar achten? – Oded

0

Wenn 2 Zeichenfolgen verkettet werden, wird eine neue Zeichenfolge generiert, da die Zeichenfolge unveränderlich ist. Auch wenn Sie eine Zeichenfolge ändern, wird eine neue Zeichenfolge generiert. es zu beweisen, nur versuchen

s1 = "foo" 
s2 = s1 
s1 = s1 + "bar" 's2 == 'foo' 

Daumenregel: glaube nicht an Strings Stringvariablen als Referenz, sondern als Wertobjekte, genau wie int oder Bool Variablen.

0

Sie tun nur Ihre Zuweisung und Verkettung in der falschen Reihenfolge, ändern Sie dies;

Public Class Form1 
    Public s1 As String = "a" 
    Public s2 As String = "b" 
    Public s3 As String = "c" 
    Public s4 As String = "d" 
    Public s5 As String = "e" 
    Public s6 As String = "" 
    Public s7 As String = "k" 

    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click 
     s2 = s7 
     s6 = s1 & s2 & s3 & s4 & s5 
     MessageBox.Show(s6) 's6 = abcde 

    End Sub 
End Class 
1

, wenn Sie Wert speichern in s6 es als „ABCDE“ gespeichert wird und dann nach, dass Sie den Wert s2 ändern, so s6 ist nicht betroffen, weil sie nicht in Ausdruck „s2 = s7“ ist

, da der Compiler nur s2 bekommt und s7 so funktioniert es auf diesem der Compiler nicht jede Variable zu überprüfen gemacht wird, wenn Sie eine beliebige Variable ändern .....

Verwandte Themen