在我还在学习的时候,请对我这些人轻松。
以下代码:
Imports System.Console
Module Module1
Sub Main()
Dim num As Integer
Dim name As String
num = 1
name = "John"
WriteLine("Hello, {0}", num)
WriteLine("Hello, {0}", name)
WriteLine("Hello, {0}", 1)
WriteLine("Hello, {0}", "John")
WriteLine("5 + 5 = {0}", 5 + 5)
WriteLine()
End Sub
End Module
与此代码具有相同的输出:
Imports System.Console
Module Module1
Sub Main()
Dim num As Integer
Dim name As String
num = 1
name = "John"
WriteLine("Hello, " & num)
WriteLine("Hello, " & name)
WriteLine("Hello, " & 1)
WriteLine("Hello, " & "John")
WriteLine("5 + 5 = " & 5 + 5)
WriteLine()
End Sub
End Module
两个输出:
您好,1
你好,约翰
您好,1
你好,约翰
5 + 5 = 10
我到处寻找,找不到答案
何时使用“{0},{1},...等”?何时使用“&”?
哪个更好?为什么?
答案 0 :(得分:6)
使用{0}
,您指定了格式占位符,而使用&
,您只是连接字符串。
使用格式占位符
Dim name As String = String.Format("{0} {1}", "James", "Johnson")
使用字符串连接
Dim name As String = "James" & " " & "Johnson"
答案 1 :(得分:5)
你在这里看到的是两个非常不同的表达式,恰好可以评估相同的输出。
VB.Net中的&
运算符是字符串连接运算符。它本质上是通过将表达式的左侧和右侧转换为String
并将它们添加到一起来实现的。这意味着以下所有操作都大致等效
"Hello " & num
"Hello " & num.ToString()
"Hello " & CStr(num)
{0}
是.Net API的一项功能。它表示字符串中的位置,稍后将替换为值。 {0}
指的是传递给函数的第一个值,{1}
指的是第二个,依此类推。这意味着以下所有操作都大致等效
Console.WriteLine("Hello {0}!", num)
Console.WriteLine("Hello " & num & "!")
您看到相同输出的原因是因为将{0}
放在字符串的末尾几乎与2个值的字符串串联完全相同。
答案 2 :(得分:4)
使用{N}
称为Composite Formatting。除了可读性之外,还有一个优点是您可以轻松设置对齐和格式属性。来自MSDN链接的示例:
Dim MyInt As Integer = 100
Console.WriteLine("{0:C}", MyInt)
' The example displays the following output
' if en-US is the current culture:
' $100.00
答案 3 :(得分:2)
{0}是一个与String.Format结合使用的占位符,以便具有更易读且更高效的字符串替换。包括WriteLine在内的几个方法调用都对String.Format进行了隐式调用。
使用串联的问题是每个concat操作都会创建一个消耗内存的新字符串。
如果你进行了大量的替换,那么最好的表现就是使用System.Text.StringBuilder代替。