vb.net字符串连接字符串+函数输出+字符串=字符串+函数输出并没有更多

时间:2010-02-04 10:15:01

标签: vb.net string-concatenation

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

3 个答案:

答案 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>"