以下输出生成一个没有关闭xml标记的字符串。
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()函数返回一个字符串。
答案 0 :(得分:1)
考虑下面的代码应该等同于您的代码:
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)
我测试了它,在两种情况下输出都是:<G3Grid:Spots>SomeValue</G3Grid:Spots>
如果你没有得到相同的结果那么它是因为m_rFlight.Layout
不是一个字符串,或者Me.gvwSpots.LayoutToString()
没有返回一个字符串并且对+运算符做了一些奇怪的事情。你可以使用&amp;而不是确保只执行字符串连接。
答案 1 :(得分:1)
正如Meta-Knight所说,除了我建议使用StringBuilder类:
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()
答案 2 :(得分:0)
您可以使用string.concat
m_rFlight.Layout = string.concat(m_rFlight.Layout, "<G3Grid:Spots>",_
Me.gvwSpots.LayoutToString(), "</G3Grid:Spots>")
或者,正如Meta-Knight所提到的,&amp;而不是+。 (它会在连接之前始终转换为字符串。)
m_rFlight.Layout &= "<G3Grid:Spots>" & Me.gvwSpots.LayoutToString() & "</G3Grid:Spots>"