ドル記号 ($"string") は何をするのですか? [重複] 質問する

ドル記号 ($

ある本で C# の練習問題をいくつか読んでいたのですが、困惑する例に出会いました。本からそのまま引用すると、出力行は次のようになります。

Console.WriteLine($"\n\tYour result is {result}.");

コードは動作し、 はdouble result期待どおりに表示されます。ただし、 が文字列の先頭にある理由が理解できなかったため$、 を削除することにしました。これで、コードは内容ではなく配列の名前を出力します{result}。残念ながら、この本では $ がなぜそこにあるかは説明されていません。

文字列のフォーマットとオーバーロード メソッドに関して、VB 2015 ヘルプと Google を徹底的に調べましたConsole.WriteLine。なぜそうなるのかを説明するものは見つかりませんでした。アドバイスをいただければ幸いです。

ベストアンサー1

これは、 と呼ばれる C# 6 の新機能ですInterpolated Strings

最も簡単に理解する方法は、補間された文字列式は、含まれる式を式の結果のToString 表現に置き換えることによって文字列を作成するというものです。

詳細については、こちらをご覧ください。マイクロソフト

さて、もう少し考えてみましょう。この機能が優れているのはなぜでしょうか?

たとえば、次のクラスがあるとしますPoint

public class Point
{
    public int X { get; set; }

    public int Y { get; set; }
}

2 つのインスタンスを作成します。

var p1 = new Point { X = 5, Y = 10 };
var p2 = new Point { X = 7, Y = 3 };

次に、画面に出力します。通常使用する 2 つの方法は次のとおりです。

Console.WriteLine("The area of interest is bounded by (" + p1.X + "," + p1.Y + ") and (" + p2.X + "," + p2.Y + ")");

ご覧のとおり、このように文字列を連結すると、コードが読みにくくなり、エラーが発生しやすくなります。次のようにするstring.Format()と、コードが読みやすくなります。

Console.WriteLine(string.Format("The area of interest is bounded by({0},{1}) and ({2},{3})", p1.X, p1.Y, p2.X, p2.Y));

これにより、新たな問題が発生します。

  1. 引数の数とインデックスは自分で管理する必要があります。引数の数とインデックスが同じでない場合、実行時エラーが発生します。

これらの理由から、新しい機能を使用する必要があります。

Console.WriteLine($"The area of interest is bounded by ({p1.X},{p1.Y}) and ({p2.X},{p2.Y})");

コンパイラがプレースホルダーを管理するようになったため、正しい引数を文字列内に配置するだけでよいため、正しい引数のインデックス付けを心配する必要がなくなりました。

全文は以下をお読みくださいこのブログ

おすすめ記事