補間された文字列は、C#6.0の新機能の1つです。
MSDNによると、埋め込まれたC#式の構文には、オプションのコンマ区切り値を含めることができます。これは documentation で<optional-comma-field-width>
と見なされます。
残念ながら、このフィールドの目的は見つかりませんでした。
その名前から、この値は「補間された」フィールドの最大サイズを設定すると考えるかもしれませんが、次の式を試してみると、
var p = Process.GetCurrentProcess();
Console.WriteLine($"Process name is {p.ProcessName, 5}");
次の出力が表示されます。
Process name is LINQPad.UserQuery
maximumではなく、そのフィールドに使用するminimumの幅です。文字列は、幅に指定した5文字より長いため、フィールドは文字列の長さに拡張されます。幅が長いほど、違いが劇的にわかります。
var p = Process.GetCurrentProcess();
$"Process name is {p.ProcessName, 50}".Dump();
利回り:
Process name is LINQPad.UserQuery
正のフィールドサイズは右寄せされます。負のフィールドサイズは左揃えになります。
ドキュメントは、MSDNの Composite Formatting ページの方が優れています。
オプションの配置コンポーネントは、適切なフォーマット済みフィールド幅を示す符号付き整数です。アラインメントの値がフォーマットされた文字列の長さより短い場合、アラインメントは無視され、フォーマットされた文字列の長さがフィールド幅として使用されます。フィールド内のフォーマット済みデータは、配置が正の場合は右寄せされ、配置が負の場合は左寄せされます。パディングが必要な場合は、空白が使用されます。位置合わせを指定する場合は、コンマが必要です。
数値はalignmentであり、Alignment Component here に記載されています。
フィールド内のフォーマット済みデータは、配置が正の場合は右寄せされ、配置が負の場合は左寄せされます。
あなたの例では、alignmentは、p.ProcessName
文字よりも短い場合、5
にスペースを埋め込みます。文字列の長さがalignmentの絶対値よりも小さい場合(例のように)、alignmentは効果がありません。
例
var text = "MyText";
Console.WriteLine($"x{text}x");
Console.WriteLine($"x{text, 3}x");
Console.WriteLine($"x{text, 10}x");
Console.WriteLine($"x{text, -10}x");
結果
xMyTextx
xMyTextx
x MyTextx
xMyText x