Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Sztringek létrehozására szolgál. Az interpolált sztring úgy néz ki, mint egy interpolált kifejezéseket tartalmazó sablonsztring. Az interpolált sztring olyan sztringet ad vissza, amely az általa tartalmazott interpolált kifejezéseket a sztringreprezentációkkal helyettesíti. Ez a funkció a Visual Basic 14-ben és újabb verzióiban érhető el.
Az interpolált sztring argumentumai könnyebben érthetők, mint az összetett formátumú sztringek. A következő interpolált sztring például két interpolált kifejezést tartalmaz, {name} és {hours:hh}:
Console.WriteLine($"Name = {name}, hours = {hours:hh}")
Az ezzel egyenértékű összetett formátum sztringje a következő:
Console.WriteLine("Name = {0}, hours = {1:hh}", name, hours)
Az interpolált sztring szerkezete a következő:
$"<text> {<interpolated-expression> [,<field-width>] [:<format-string>] } <text> ..."
Helyszín:
field-widthegy aláírt egész szám, amely a mező karaktereinek számát jelzi. Ha pozitív, a mező jobbra van igazítva; ha negatív, balra igazított.format-stringa formázandó objektum típusának megfelelő formátumsztring. Egy DateTime érték lehet például szabványos dátum- és időformátum-sztring, mint például "D" vagy "d".
Fontos
Nem lehet szóköz a $ és a " között, amelyek a karakterláncot indítják. Ez fordítási hibát okoz.
Az interpolált sztringeket bárhol használhatja, ahol sztringkonstanst használhat. Az interpolált sztring minden alkalommal kiértékelésre kerül, amikor az interpolált sztringgel rendelkező kód végrehajtása történik. Ez lehetővé teszi egy interpolált sztring definíciójának és kiértékelésének elkülönítését.
Ha kapcsos zárójelet ("{" vagy "}") szeretne egy interpolált sztringben szerepeltetni, használjon két kapcsos zárójelet, "{{" vagy "}}". További információ: Implicit konverziók.
Ha az interpolált sztring más, speciális jelentésű karaktereket tartalmaz, például idézőjelet ("), kettőspontot (:) vagy vesszőt (,), akkor escape-elni kell ezeket, ha szó szerinti szövegben fordulnak elő. Vagy ha egy interpolált kifejezés nyelvi elemei, akkor zárójelekkel tagolt kifejezésben kell szerepelniük. Az alábbi példa az idézőjeleket használja, hogy belefoglalja őket az eredményként kiadott szövegláncba.
Public Module Example
Public Sub Main()
Dim name = "Horace"
Dim age = 34
Dim s1 = $"He asked, ""Is your name {name}?"", but didn't wait for a reply."
Console.WriteLine(s1)
Dim s2 = $"{name} is {age:D3} year{If(age = 1, "", "s")} old."
Console.WriteLine(s2)
End Sub
End Module
' The example displays the following output:
' He asked, "Is your name Horace?", but didn't wait for a reply.
' Horace is 034 years old.
Implicit konverziók
Egy interpolált sztringből három implicit típusú átalakítás van:
Az interpolált karakterlánc String-ra/-re való átalakítása. Az alábbi példa egy olyan sztringet ad vissza, amelyben a kifejezések helyére azok sztring reprezentációi kerültek. Például:
Public Module Example Public Sub Main() Dim name = "Bartholomew" Dim s1 = $"Hello, {name}!" Console.WriteLine(s1) End Sub End Module ' The example displays the following output: ' Hello, Bartholomew! ' </Snippet1>Ez egy karakterlánc értelmezés végső eredménye. A kettős kapcsos zárójelek ("{{" és "}}") minden előfordulása egyetlen kapcsos zárójellé alakul át.
Interpolált sztring átalakítása egy IFormattable változóvá, amely lehetővé teszi több eredménysztring létrehozását kultúraspecifikus tartalommal egyetlen IFormattable példányból. Ez hasznos lehet például az egyes kultúrák megfelelő numerikus és dátumformátumainak beiktatásához. A kettős kapcsos zárójelek ("{{" és "}}") minden előfordulása dupla kapcsos zárójelként marad, amíg a metódus explicit vagy implicit meghívásával meg nem formázza a ToString() sztringet. A rendszer az összes tartalmazott interpolációs kifejezést átalakítja {0}, {1}és így tovább.
Az alábbi példa tükröződéssel jeleníti meg egy interpolált sztringből létrehozott változó tagjait, valamint mező- és tulajdonságértékeit IFormattable . A változót a IFormattable metódusnak Console.WriteLine(String) is átadja.
Imports System.Globalization Imports System.Reflection Public Module Example Public Sub Main() Dim price = 1000 Dim s2 As IFormattable = $"The cost of this item is {price:C}." ShowInfo(s2) CultureInfo.CurrentCulture = New CultureInfo("en-US") Console.WriteLine(s2) CultureInfo.CurrentCulture = New CultureInfo("fr-FR") Console.WriteLine(s2) End Sub Private Sub ShowInfo(obj As Object) Console.WriteLine($"Displaying member information:{vbCrLf}") Dim t = obj.GetType() Dim flags = BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.Static Or BindingFlags.NonPublic For Each m In t.GetMembers(flags) Console.Write($" {m.Name} {m.MemberType}") If m.MemberType = MemberTypes.Property Then Dim p = t.GetProperty(m.Name, flags) Console.Write($" Value: {p.GetValue(obj)}") End If If m.MemberType = MemberTypes.Field Then Dim f = t.GetField(m.Name, flags) Console.Write($" Value: {f.GetValue(obj)}") End If Console.WriteLine() Next Console.WriteLine($"-------{vbCrLf}") End Sub End Module ' The example displays the following output: Displaying member information: ' get_Format Method ' GetArguments Method ' get_ArgumentCount Method ' GetArgument Method ' ToString Method ' System.IFormattable.ToString Method ' ToString Method ' Equals Method ' GetHashCode Method ' GetType Method ' Finalize Method ' MemberwiseClone Method ' .ctor Constructor ' Format Property Value: The cost of this item is {0:C}. ' ArgumentCount Property Value: 1 ' _format Field Value: The cost of this item is {0:C}. ' _arguments Field Value: System.Object[] ' ------- ' ' The cost of this item is $1,000.00. ' The cost of this item is 1 000,00 €. ' </Snippet1>Vegye figyelembe, hogy az interpolált sztring csak tükröződés használatával vizsgálható meg. Ha egy sztringformázási metódusnak adja át, például WriteLine(String)a formázási elemek feloldódnak, és az eredménysztring vissza lesz adva.
Interpolált sztring átalakítása összetett formátumú sztringet FormattableString képviselő változóvá. Az összetett formátumú sztring vizsgálata és annak eredménysztringként való megjelenítése például segíthet abban, hogy védelmet biztosítson egy injektálásos támadással szemben, ha lekérdezést készítünk. A FormattableString következőkre is vonatkozik:
- Egy ToString() túlterhelés, amely eredménysztringet hoz létre a CurrentCulture.
- Egy Invariant metódus, amely karakterláncot hoz létre a InvariantCulture.
- Egy ToString(IFormatProvider) metódus, amely eredménysztringet hoz létre egy adott kultúrához.
A dupla kapcsos zárójelek ("{{" és "}}") minden előfordulása dupla kapcsos zárójelként marad, amíg meg nem formázza. A rendszer az összes tartalmazott interpolációs kifejezést átalakítja {0}, {1}és így tovább.
Imports System.Globalization Public Module Example Public Sub Main() Dim name = "Bartholomew" Dim s3 As FormattableString = $"Hello, {name}!" Console.WriteLine($"String: '{s3.Format}'") Console.WriteLine($"Arguments: {s3.ArgumentCount}") Console.WriteLine($"Result string: {s3}") End Sub End Module ' The example displays the following output: ' String: 'Hello, {0}!' ' Arguments: 1 ' Result string: Hello, Bartholomew!