各書式指定項目は、次の形式を使用し、次のコンポーネントで構成されます。
{index[,alignment][:formatString]}
対になった中かっこ ("{" と "}") が必要です。
Index コンポーネント
必須の index コンポーネントは、パラメータ指定子とも呼ばれ、オブジェクトのリスト内で対応する項目を識別するための 0 から始まる数値です。つまり、パラメータ指定子が 0 である書式指定項目はリスト内の最初のオブジェクトを書式設定し、パラメータ指定子が 1 である書式指定項目はリスト内の 2 番目のオブジェクトを書式設定します。
同じパラメータ指定子を指定することによって、複数の書式指定項目でオブジェクトのリスト内の同じ要素を参照できます。たとえば、複合書式指定文字列で "{0:X} {0:E} {0:N}" のように指定することによって、1 つの数値を 16 進形式、指数形式、および数値形式で書式設定できます。
各書式指定項目は、リスト内のどのオブジェクトでも参照できます。たとえば、3 つのオブジェクトが存在する場合、2 番目、1 番目、3 番目のオブジェクトを書式設定するには、"{1} {0} {2}" のような複合書式指定文字列を指定します。書式指定項目で参照されないオブジェクトは無視されます。パラメータ指定子がオブジェクトのリストの範囲外の項目を指定する場合は、ランタイム例外が発生します。
Alignment コンポーネント
省略可能な alignment コンポーネントは、書式設定フィールドの幅を指定する符号付き整数です。alignment の値が書式設定する文字列の長さよりも小さい場合、alignment は無視され、書式設定する文字列の長さがフィールドの幅として使用されます。フィールド内の書式設定されたデータは、alignment が正の場合は右揃え、alignment が負の場合は左揃えされます。埋め込みが必要な場合は、空白が使用されます。alignment を指定する場合はコンマが必要です。
Format String コンポーネント
オプションの formatString コンポーネントは、書式設定されるオブジェクトの種類に適した書式指定文字列です。対応するオブジェクトが数値の場合は数値書式指定文字列を指定し、対応するオブジェクトが DateTime オブジェクトの場合は日付と時刻の書式指定文字列を指定し、対応するオブジェクトが列挙値の場合は列挙型書式指定文字列を指定します。formatString が指定されない場合は、数値、日付と時刻、または列挙型の汎用 ("G") 書式指定子が使用されます。formatString を指定する場合はコロンが必要です。
エスケープ中かっこ ({})
左中かっこ ({) および右中かっこ (}) は、書式指定項目の開始および終了として解釈されます。したがって、左中かっこおよび右中かっこを文字として表示するためには、エスケープ シーケンスを使用する必要があります。左中かっこを 1 つ ("{") 表示するには、左中かっこ 2 つ ("{{") を固定テキストに指定します。また、右中かっこを 1 つ ("}") 表示するには、右中かっこ 2 つ ("}}") を指定します。書式指定項目に使用されている中かっこは、指定されている順序に従って解釈されます。入れ子になった中かっこを解釈する機能はサポートされていません。
エスケープされた中かっこの解釈によっては、予測しない結果になる場合があります。たとえば、"{{{0:D}}}" という書式指定項目について考えます。この書式指定項目は、左中かっこ、10 進数として書式設定された数値、および右中かっこを表示することを意図しています。しかし、この書式指定項目は、実際には、次のように解釈されます。
最初の 2 つの左中かっこ ("{{") がエスケープされ、左中かっこ 1 つが作成されます。
次の 3 文字 ("{0:") は、書式指定項目の開始として解釈されます。
次の文字 ("D") は、Decimal 標準数値書式指定子として解釈できますが、エスケープされた次の 2 つの右中かっこ ("}}") からは単一の中かっこが作成されます。結果として作成される文字列 ("D}") は、標準数値書式指定子ではないため、リテラル文字列 "D}" の表示を意味するカスタム書式指定文字列として解釈されます。
最後の中かっこ ("}") は、書式指定項目の終わりとして解釈されます。
最終的には、"{D}" というリテラル文字列が表示されます。書式設定対象だった数値は、表示されません。
エスケープした中かっこと書式指定項目とが誤って解釈されないコードを記述するためには、中かっこと書式指定項目を別々に書式設定するという方法があります。つまり、最初の書式設定操作でリテラルの開く中かっこを表示し、次の書式設定操作で書式指定項目の結果を表示し、最後の操作でリテラルの閉じる中かっこを表示します。
処理の順序