Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Digunakan untuk membuat string. String terinterpolasi terlihat seperti string templat yang berisi ekspresi terinterpolasi. String terinterpolasi mengembalikan string yang menggantikan ekspresi terinterpolasi yang dikandungnya dengan representasi stringnya. Fitur ini tersedia di Visual Basic 14 dan versi yang lebih baru.
Argumen string terinterpolasi lebih mudah dipahami daripada string format komposit. Misalnya, string terinterpolasi berikut berisi dua ekspresi terinterpolasi, {name} dan {hours:hh}:
Console.WriteLine($"Name = {name}, hours = {hours:hh}")
String format komposit yang setara adalah:
Console.WriteLine("Name = {0}, hours = {1:hh}", name, hours)
Struktur string terinterpolasi adalah:
$"<text> {<interpolated-expression> [,<field-width>] [:<format-string>] } <text> ..."
Lokasi:
field-widthadalah bilangan bulat bertanda tangan yang menunjukkan jumlah karakter di bidang . Jika positif, bidang selaras dengan kanan; jika negatif, rata kiri.format-stringadalah string format yang sesuai untuk jenis objek yang sedang diformat. Misalnya, untuk DateTime nilai, itu bisa menjadi string format tanggal dan waktu standar seperti "D" atau "d".
Penting
Anda tidak dapat memiliki spasi kosong antara $ dan " yang memulai string. Melakukannya menyebabkan kesalahan kompilator.
Anda dapat menggunakan string terinterpolasi di mana saja Anda dapat menggunakan string literal. String terinterpolasi dievaluasi setiap kali kode dengan string terinterpolasi dijalankan. Ini memungkinkan Anda untuk memisahkan definisi dan evaluasi string terinterpolasi.
Untuk menyertakan kurung kurawal ("{" atau "}") dalam string terinterpolasi, gunakan dua kurung kurawal, "{{" atau "}}". Untuk informasi selengkapnya, lihat Konversi implisit.
Jika string terinterpolasi berisi karakter lain dengan arti khusus dalam string terinterpolasi, seperti tanda kutip ("), titik dua (:), atau koma (,), karakter tersebut harus diloloskan jika terjadi dalam teks harfiah. Atau, jika elemen bahasa yang disertakan dalam ekspresi terinterpolasi, elemen tersebut harus disertakan dalam ekspresi yang dibatasi oleh tanda kurung. Contoh berikut menghindari karakter tanda kutip untuk menyertakannya ke dalam string hasil.
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.
Konversi implisit
Ada tiga konversi jenis implisit dari string terinterpolasi:
Konversi string terinterpolasi ke String. Contoh berikut mengembalikan string yang ekspresi string terinterpolasinya telah diganti dengan representasi stringnya. Contohnya:
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>Ini adalah hasil akhir dari interpretasi string. Semua kemunculan kurung kurawal ganda ("{{" dan "}}") dikonversi menjadi kurung kurawal tunggal.
Konversi string yang diinterpolasi ke dalam variabel IFormattable yang memungkinkan Anda membuat beberapa string hasil dengan konten khusus budaya dari satu instance IFormattable. Ini berguna untuk menyertakan hal-hal seperti format numerik dan tanggal yang benar untuk budaya individu. Semua kemunculan kurung kurawal ganda ("{{" dan "}}") tetap sebagai kurung kurawal ganda hingga Anda memformat string dengan memanggil metode ToString() secara eksplisit atau implisit. Semua ekspresi interpolasi yang terkandung dikonversi ke {0}, {1}, dan sebagainya.
Contoh berikut menggunakan refleksi untuk menampilkan anggota serta nilai bidang dan properti dari variabel IFormattable yang dibuat dari string terinterpolasi. Ini juga meneruskan IFormattable variabel ke Console.WriteLine(String) metode .
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>Perhatikan bahwa string terinterpolasi hanya dapat diperiksa dengan menggunakan pantulan. Jika diteruskan ke metode pemformatan string, seperti WriteLine(String), item formatnya diselesaikan dan string hasil dikembalikan.
Konversi string terinterpolasi ke FormattableString variabel yang mewakili string format komposit. Memeriksa string format komposit dan cara dirender sebagai string hasil dapat, misalnya, membantu Anda melindungi diri dari serangan injeksi saat Anda membuat kueri. A FormattableString juga mencakup:
- Overload ToString() yang menghasilkan string hasil untuk CurrentCulture.
- Metode Invariant yang menghasilkan string untuk InvariantCulture.
- Metode ToString(IFormatProvider) yang menghasilkan string hasil untuk budaya tertentu.
Semua kemunculan kurung kurawal ganda ("{{" dan "}}") tetap sebagai kurung kurawal ganda hingga Anda memformat. Semua ekspresi interpolasi yang terkandung dikonversi ke {0}, {1}, dan sebagainya.
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!