PHPでは、次のことができます。
$name = 'John';
$var = "Hello {$name}"; // => Hello John
C#に同様の言語構成体はありますか?
String.Format();
があることは知っていますが、文字列の関数/メソッドを呼び出さなくてもできるかどうか知りたいです。
C#6では、 文字列補間 を使用できます。
string name = "John";
string result = $"Hello {name}";
Visual Studioでこれを強調する構文により、非常に読みやすくなり、すべてのトークンがチェックされます。
この機能は、C#5以下には組み込まれていません。
更新:C#6は文字列補間をサポートするようになりました。新しい回答を参照してください。
これを行うための推奨される方法は、String.Format
を使用することです。
string name = "Scott";
string output = String.Format("Hello {0}", name);
ただし、(リフレクションを介して)名前付きプレースホルダーを使用できるようにString.Format
を拡張する SmartFormat という小さなオープンソースライブラリを作成しました。だから、あなたはすることができます:
string name = "Scott";
string output = Smart.Format("Hello {name}", new{name}); // Results in "Hello Scott".
あなたがそれを好き願っています!
C#5(-VS2013)までは、関数/メソッドを呼び出す必要があります。 String.Format
などの「通常の」関数、または+演算子のオーバーロード。
string str = "Hello " + name; // This calls an overload of operator +.
C#6(VS2015)では、文字列補間が導入されました(他の回答で説明されています)。