2

以下输出生成一个没有结束 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() 函数返回一个字符串。

4

3 回答 3

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()不返回字符串并且使用 + 运算符做了一些奇怪的事情。您可以使用 & 运算符来确保仅执行字符串连接。

于 2010-02-04T16:02:32.393 回答
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()
于 2010-02-04T16:08:30.257 回答
0

您可以使用 string.concat

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

或者,正如 Meta-Knight 所提到的,用 & 而不是 +。(它总是在连接之前转换为字符串。)

m_rFlight.Layout &= "<G3Grid:Spots>" & Me.gvwSpots.LayoutToString() & "</G3Grid:Spots>"
于 2010-02-06T16:38:52.503 回答