2010-02-04 6 views
2

다음 출력은 닫는 xml 태그가없는 문자열을 생성합니다.vb.net 문자열 연결 문자열 + 함수 출력 + 문자열 = 문자열 + 함수 출력 및 더 이상

m_rFlight.Layout = m_rFlight.Layout + "<G3Grid:Spots>" + Me.gvwSpots.LayoutToString() + "</G3Grid:Spots>" 

이 다음 코드는 어떤 이유 일 밤은 첫 번째 예제의 두 번째이며, 여기에 무슨 일이 제대로

m_rFlight.Layout = m_rFlight.Layout + "<G3Grid:Spots>" + Me.gvwSpots.LayoutToString() 
m_rFlight.Layout = m_rFlight.Layout + "</G3Grid:Spots>" 'add closing tag 

작동?

gvwSpots.LayoutToString() 함수는 문자열을 반환합니다. 나는 그것을 테스트하고 두 경우 모두 출력이

Dim someString As String = String.Empty 

someString = someString + "<G3Grid:Spots>" + "SomeValue" + "</G3Grid:Spots>" 

Console.WriteLine(someString) 

someString = String.Empty 
someString = someString + "<G3Grid:Spots>" + "SomeValue" 
someString = someString + "</G3Grid:Spots>" 

Console.WriteLine(someString) 

:

답변

1

내가 StringBuilder 클래스를 사용하는 것이 좋습니다 것을 제외하고 말했다 +의. (항상 연결하기 전에 문자열로 변환합니다.)

m_rFlight.Layout &= "<G3Grid:Spots>" & Me.gvwSpots.LayoutToString() & "</G3Grid:Spots>" 
+0

그래서 나는 왜 코드가 뭔가를하고 있는지 묻습니다. 그리고 당신은 stringbuilder를 사용할 것을 제안합니까? 코드가 모든 사용자에 대해 한 번 실행됩니다. 성능상의 이점으로 stringbuilder를 사용하면 그다지 유용하지 않습니다. 마지막 문자열은 1000자를 넘지 않습니다. – CodingBarfield

+0

@Barfieldmv : Yah, 내가 말했듯이, 나는 Meta-Knight에 동의한다. 그것은 타이핑 문제로 인해 문자열에 문제가 추가 될 가능성이있는 것처럼 보였습니다. StringBuilder를 사용하면 출력이 확실히 문자열임을 확인하여이를 완화 할 수 있습니다. 그것 이외에, (+ 다른 말처럼) +를 연결해서는 안됩니다. 이 경우 성능을 위해 StringBuilder를 사용하지 않는 것이 좋습니다. 유형 안전을 위해 추천합니다. –

1

는 코드의 동일해야 다음 코드를 고려 <G3Grid:Spots>SomeValue</G3Grid:Spots>

동일한 결과를 다음하지 않는 경우 m_rFlight.Layout이 문자열이 아니거나 Me.gvwSpots.LayoutToString()이 문자열을 반환하지 않기 때문에 + 연산자가 이상합니다. 대신에 문자열 연결 만 수행되도록 & 연산자를 사용할 수 있습니다. 메타 나이트가 언급 한 바와 같이

Dim myString As New System.Text.StringBuilder 

myString.Append("<G3Grid:Spots>") 
myString.Append(Me.gvwSpots.LayoutToString()) 
myString.Append("</G3Grid:Spots>") 

m_rFlight.Layout = myString.ToString() 
+0

나는 동의 할 것 -은 "+"로는 "&"문자열 연결을 위해, 또는 당신이 언젠가 어떤 inadvertant 숫자 추가로 끝낼 수 있습니다 대체합니다. – xpda

0

당신은 대신, &을 string.concat

m_rFlight.Layout = string.concat(m_rFlight.Layout, "<G3Grid:Spots>",_ 
    Me.gvwSpots.LayoutToString(), "</G3Grid:Spots>") 

를 사용하거나 할 수 있습니다

메타 나이트로