最近、フレームワークの v2.0 でジェネリックが導入される前に書かれたと思われる「レガシー」コードをまだ使用している部分が BCL にあることに気付きました。どうやら、その「レガシー」コードの一部により、CLR が多数のボックス化/ボックス化解除操作を実行する可能性があります。
ボクシングの過度の使用は決して良いことではないので、ボクシングが発生していることに気付いた BCL の他の重要な場所があるかどうかを知りたいと思いましたか? ありがとう
言及された特定の例については、次のことに注意してください。
そのため、プロファイリングで問題があることが示されている場合にのみ、これの内部について心配する必要があります。
MS はこれを修正しようとはしなかったので、これが顧客にとって問題になったことはないと思われます。
隠された割り当ての静脈であなたがより懸念しているのは、次の可能性が高いです。
IList<T>
List<T>
しかし、繰り返しになりますが、これらすべて (回避するのにかなりの労力を必要とする辞書のキーとしての列挙は別として) は、必要な場合にのみ処理する必要があります。
一つには、あなたは正しいです-それは良くありません。ただし、ドットネットフレームワークを埋め込んでも効果はありません。フレームワークの内部をそのまま受け入れ、将来の最適化(たとえば、TransactionScope
2.0から3.5 SP1に最適化されている)を期待する必要があります。
それがそれをクリアしたことを願っています。
知識はあなたに力を与えます。
最近、 "path" +'\'+"fileName"がどのように実装されているかを知りました。
真ん中の文字'\'は最初にオブジェクトにボックス化され、次にConcat(object、object、object)が呼び出され、次にToStringが3回呼び出され、最後にConcat(string、string、string)が呼び出されます。
プログラマーがそれを知っていたら、彼/彼女は次のように書くことができたでしょう: "path" + "\" + "filename"