web-dev-qa-db-ja.com

C#文字列補間のヌル値はどのように処理されますか?

C#6.0では、文字列補間が追加されました。

string myString = $"Value is {someValue}";

上記の例でnull値はどのように処理されますか? (someValueがnullの場合)

編集:明確にするために、テストを行い、失敗しなかったことを認識しました。確認すべきケースがあるかどうかを確認するために質問が開かれました。文字列補間を使用する前のnull。

36
Calle

それはnull参照をチェックして空の文字列で置き換えるstring.Format("Value is {0}", someValue)と同じです。ただし、実際にnullをこのstring.Format("Value is {0}", null)のように渡すと、例外がスローされます。ただし、$"Value is {null}"の場合、nullは最初に引数に設定され、スローされません。

19
juharr

TryRoslyn から、次のように逆コンパイルされます。

string arg = null;
string.Format("Value is {0}", arg);

String.Formatは、null値に空の文字列を使用します。 形式メソッドの概要 セクション;

引数の値がnullの場合、フォーマット項目はString.Emptyに置き換えられます。

14
Soner Gönül