2012-04-12 21 views
0

文字列連結について簡単な質問があります。以下はコードです。私はなぜs6 = "abcde"ではなく "akcde"でないのか聞いてみたいのですか?私はs2の値を "k"に変更しました。文字列連結:最終文字列値が最新の値と等しくない

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

.....コンパイラはあなたがいずれかの変数を変更すると、すべての変数をチェックするために行われていないこと 上で動作しますので、 akcde s6 = s1&s2&s3&s4&s5 –

答えて

1

あなたはS6に値を割り当てるときに理由 - S1の連結に基づく新しい文字列 - S5が作成された - あなたがこれを行うと変更s2はその後S6

0

の値には影響しません:

s6 = s1 & s2 & s3 & s4 & s5 

s6abcde、連結から生じた新しい文字列が含まれています。

次に、変数s2の値を変更します。これはs6を変更しません。

+0

@Dow nvoter - コメントするケア? – Oded

0

2つの文字列を連結すると、文字列は不変なので新しい文字列が生成されます。 文字列を変更しても、新しい文字列が生成されます。 はちょうど親指の

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

ルールを試してみてください、それを証明するには、次の文字列を基準として文字列変数には考えていませんが、正確にintまたはブール変数として値オブジェクト、など。

0

あなたはあなたの割り当てを行い、間違った順序で連結しています。これに変更してください。

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

あなたはS6に値を格納するとき、それは「ABCDE」 として格納されますし、そのあとにS2の値を変更するので、S6、それは表現に存在しないため、影響はありません「S2 = S7」

コンパイラはS2のみ取得し、S7ので、それはあなたがABCDEする文字列を連結していません

関連する問題