4

私はまだ学んでいるので、私に優しくしてください。

次のコード:

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}、...など」
をいつ使用するか? いつ「&」を使用するのですか? どちらが良いですか?なぜ?

4

4 に答える 4

6

{0}フォーマットプレースホルダーを指定しているのに対し、文字列を連結して&いるだけです。

フォーマットプレースホルダーの使用

Dim name As String = String.Format("{0} {1}", "James", "Johnson")

文字列連結の使用

Dim name As String = "James" & " " & "Johnson"
于 2012-04-09T21:02:44.373 に答える
5

ここに表示されているのは、同じ出力に評価される2つの非常に異なる式です。

VB.Netの&演算子は、文字列連結演算子です。これは基本的に、式の左側と右側の両方をaに変換し、Stringそれらを足し合わせることによって機能します。これは、以下のすべての操作がほぼ同等であることを意味します

"Hello " & num
"Hello " & num.ToString()
"Hello " & CStr(num)

これ{0}は、.NetAPIの機能です。これは、後で値に置き換えられる文字列内の位置を表します。は{0}、関数に渡される最初の値{1}、2番目の値などを指します。これは、以下のすべての操作がほぼ同等であることを意味します

Console.WriteLine("Hello {0}!", num)
Console.WriteLine("Hello " & num & "!")

同じ出力が表示される理由{0}は、文字列の最後に配置することは、2つの値の文字列連結とほぼ同じであるためです。

于 2012-04-09T21:01:56.743 に答える
4

使用{N}複合フォーマットと呼ばれます。読みやすさに加えて、1つの利点は、配置とフォーマットのプロパティを簡単に設定できることです。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
于 2012-04-09T21:04:32.907 に答える
2

{0} は、より読みやすくパフォーマンスの高い文字列置換を行うために、 String.Formatと組み合わせて使用​​されるプレースホルダーです。WriteLine を含むいくつかのメソッド呼び出しには、String.Format への暗黙的な呼び出しがあります。

連結を使用する際の問題は、連結操作ごとに新しい文字列が作成され、メモリを消費することです。

多くの置換を実行している場合、最高のパフォーマンスは、代わりにSystem.Text.StringBuilderを使用することです。

于 2012-04-09T21:03:17.007 に答える