私は過去にこれをやったことがあります。を使用する代わりに、使用可能なすべてのオプションを.Contains
呼び出すだけです。.Replace(pattern, replacement)
典型的なユーザー指向 (データの表示/入力など) のアプリでは、ユーザーは速度の低下に気付くことはありません。
パフォーマンスの最適化を試みる前に、パフォーマンスの問題があることを確認する必要があります。時間を無駄にしている可能性が高いです。
テスト データ:
以下のテスト コードを使用すると、25,000 冊の「本」の 10 個の値を置き換えるのに 2 秒もかからないことがわかります。そのほとんどは、コンソールへの書き込みが原因です (Console.WriteLine() を削除すると、ランタイムは 160 ミリ秒未満に低下します)。書籍を a List<String>()
) に追加するだけです。私にはかなり受け入れられるようです。
String template = @"%index%. %title% - %author% [%isbn%] - %year%";
Dictionary<String, String> values = new Dictionary<String, String> { { "title", "A day in the life of..." }, { "author", "Joe S. Schmoe" }, { "year", "1945" }, { "isbn", "987-987-987-987-987" }, { "one", "1" }, { "two", "2" }, { "three", "3" }, { "four", "4" }, { "five", "5" }, { "six", "6" }, { "seven", "7" } };
String output = string.Empty;
Stopwatch watch = new Stopwatch();
watch.Start();
for (Int32 index = 0; index < 25000; index++) {
output = template;
foreach (String key in values.Keys) {
output = output.Replace("%" + key + "%", values[key]);
}
output = output.Replace("%index%", index.ToString());
Console.WriteLine(output);
}
watch.Stop();
Console.WriteLine("Elapsed time (ms): " + watch.ElapsedMilliseconds.ToString());