Effective C# 3rd 読書メモ 05 カルチャに応じた文字列にはFormattableStringを使う

FormattableStringは、C# 6.0で追加されたクラスである。
補間文字列を使用する際、デフォルトではstring(System名前空間)になるが、FormattableString(System名前空間)として作成することもできる。

string s = $"string";
var vs = $"varを使ってもstring";
FormattableString fs = $"明示的に型を指定すればFormattableString";

FormattableStringには、文字列の組み立てを助ける機能が含まれているので、カルチャに応じて文字列を組み立てる必要がある際に重宝する。
以下はFormattableStringの使用例。

using System;
using System.Globalization;

public class Program
{
  public static void Main()
  {
    FormattableString fs = $"{Math.PI}";
    Console.WriteLine(fs); // (CurrentCultureがen-USなら) 3.14
    Console.WriteLine(ToGerman(fs)); // 3,14
  }

  public static string ToGerman(FormattableString src)
  {
    return string.Format(
        CultureInfo.CreateSpecificCulture("de-DE"),
        src.Format,
        src.GetArguments());
  }
}

上記サンプルで、src.Formatsrc.GetArguments()は、どちらもFormattableStringの機能である。

参考: FormattableString クラス

コメントを残す

コメントを残す