Python の文字列書式設定構文では、位置ではなく名前による書式設定が可能であり、開発者は書式設定文字列内で変数名を直接使用できます。ただし、C# では、組み込みの String.Format はこの機能をサポートしていません。
C# で名前付き文字列の書式設定を実現するには、リフレクションまたはテンプレートを使用して独自のメソッドを実装できます。解析テクニック。
の使用リフレクション:
string myString = "{foo} is {bar} and {yadi} is {yada}".Inject(o);
テンプレート解析の使用:
Status.Text = "{UserName} last logged in at {LastLoginDate}".FormatWith(user);
改善メソッド:
public class FormattedString { private readonly string _template; public FormattedString(string template) { _template = template; } public string FormatWith(object o) { var type = o.GetType(); var props = type.GetProperties(); return _template.Replace("{PropertyName}", prop.GetValue(o)) .Replace("{propertyName}", prop.GetValue(o)) .ToString(); } }
使用法:
var formattedString = new FormattedString("{foo} is {bar} and {yadi} is {yada}"); Console.WriteLine(formattedString.FormatWith(new { foo = "alpha", bar = "beta", yadi = "gamma", yada = "delta" }));
2015 年の C# 6 のリリースにより、文字列補間が行われるようになりました。は、名前付き文字列の書式設定を可能にする組み込み機能として導入されました。構文は、上で説明したカスタム メソッドに似ています:
$"{{some_variable}}: {{some_other_variable}}"
以上がC# で名前付き文字列の書式設定を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。