2013-04-17 32 views
-1

我正在尝试将文本写入文件,并且除了一个错误之外都有这个文本。 它说:“表达应为”Vb.net在“&”之后预期的表达式

下面的代码:

Using writer As StreamWriter = New StreamWriter(filepath) 
      writer.Write("[HealthBarSettings]" & vbNewLine & _ 
"MaxHealthTicks = 50" & vbNewLine & _ 
"MaxHealthMicroTicks = 100" & vbNewLine & _ 
"DefaultHealthPerMicroTick = 50" & vbNewLine & _ 
"DefaultHealthPerTick = 200" & vbNewLine & _ 
"DefaultHealthPerMegaTick = 1000" & vbNewLine & _ 
& vbNewLine & _ 
"TickAlpha = 200" & vbNewLine & _ 
"MicroTickAlpha = 140" & vbNewLine & _ 
"MicroTickHeight = 0.5" & vbNewLine & _ 
"MegaTickAlpha = 255" & vbNewLine & _ 
"TickThickness = 1.0" & vbNewLine & _ 
"MicroTickThickness = 1.0" & vbNewLine & _ 
"MegaTickThickness = 2.0" & vbNewLine & _ 
& vbNewLine & _ 
"UseCompression = 1" & vbNewLine & _ 
"GoTransparent = 1" & vbNewLine & _ 

的错误是在第8行是它说:“& vbNewLine & _”没有别的就行了,第一&下划线。在其他线路上没有像这样的错误。

回答

0

更改线路8:

"DefaultHealthPerMegaTick = 1000" & vbNewLine _ 

& vbNewLine & _ 

的问题是多余的&。你不需要连接运算符时使用_

2

我真的讨厌字符串连接。只是为了避免它,我会写

Dim sb = new StringBuilder(680) 
sb.AppendLine("[HealthBarSettings]") 
sb.AppendLine("MaxHealthTicks = 50") 
sb.AppendLine("MaxHealthMicroTicks = 100") 
sb.AppendLine("DefaultHealthPerMicroTick = 50") 
sb.AppendLine("DefaultHealthPerTick = 200") 
sb.AppendLine("DefaultHealthPerMegaTick = 1000") 
sb.AppendLine() 
sb.AppendLine("TickAlpha = 200") 
sb.AppendLine("MicroTickAlpha = 140") 
sb.AppendLine("MicroTickHeight = 0.5") 
sb.AppendLine("MegaTickAlpha = 255") 
sb.AppendLine("TickThickness = 1.0") 
sb.AppendLine("MicroTickThickness = 1.0") 
sb.AppendLine("MegaTickThickness = 2.0") 
sb.AppendLine() 
sb.AppendLine("UseCompression = 1") 
sb.AppendLine("GoTransparent = 1") 
writer.Write(sb.ToString()) 

我已经创建了一个初始容量为680个字符的StringBuilder。 (假设17行,每行40个字符)。 StringBuilder有一个内部缓冲区存储字符。该缓冲区以16个字符的容量开始。你可以调用StringBuilder的构造函数,说你需要1K缓冲区。这将为请求的大小创建内部缓冲区,如果足够大,当添加更多字符时,框架不需要执行大小调整操作,则会超出缓冲区当前大小。

+0

+1是的,就是这样做。这是有效的,因为每次使用'&连接字符串时,原始字符串都留在内存中。 –

+0

并且对最终字符串长度有一点计算,也可以避免stringbuilder缓冲区的内部调整大小 – Steve

+0

?告诉我更多。 –

0

你已经使用&标志两次

1. "MaxHealthTicks = 50" & vbNewLine & _ 
2. "MaxHealthMicroTicks = 100" & vbNewLine & _ 
3. "DefaultHealthPerMicroTick = 50" & vbNewLine & _ 
4. "DefaultHealthPerTick = 200" & vbNewLine & _ 
6. "DefaultHealthPerMegaTick = 1000" & vbNewLine & _ 
7. & vbNewLine & _ 
8. "TickAlpha = 200" & vbNewLine & _ 
9. "MicroTickAlpha = 140" & vbNewLine & _ 
10. "MicroTickHeight = 0.5" & vbNewLine & _ 
11. "MegaTickAlpha = 255" & vbNewLine & _ 
12. "TickThickness = 1.0" & vbNewLine & _ 
13. "MicroTickThickness = 1.0" & vbNewLine & _ 
14. "MegaTickThickness = 2.0" & vbNewLine & _ 
15. & vbNewLine & _ 
16. "UseCompression = 1" & vbNewLine & _ 
17. "GoTransparent = 1" & vbNewLine & _ 

见最后一行我提到...... 6号线有“&”和7还具有“&”于是就用 两次,也同样的事情上14 15没有线,也没有必要使用,如果17没有线你的最后一行

& _