文字列挿入($"")でInvariantCultureを指定する
多言語対応のアプリケーションを開発している場合に気を配らなければならないのが.ToString()などによる文字列変換時のカルチャ指定。例えば小数点はピリオドで桁区切りはカンマと思いきや、国によっては逆だったりするので要注意だ。パース時のカルチャ指定と違うとバグるし、国によって出力したデータの書式が違ってスクリプトで解析するのが大変だったりする。
C# 6以降では$""
によって文字列挿入ができるようになっているが、普通に書くとCurrentCulture指定になる。InvariantCultureを指定したければ以下のようにする。
var message = FormattableString.Invariant($"It is now {DateTime.UtcNow}");
あるいはusing static System.FormattableString;を指定しておくことでFormattableStringを省略して
var message = Invariant($"It is now {DateTime.UtcNow}");
個人的には前者の方が明らかなので好みだ。