私はRoslyn ObjectPoolの実装(https://github.com/dotnet/roslyn/blob/master/src/Compilers/Core/SharedCollections/ObjectPool%601.cs)を見ていますが、なぜTの配列を持つ代わりに構造体の中にTをラップするのかを知りませんでしたか?Roslyn ObjectPool構造体ラッパー
[DebuggerDisplay("{Value,nq}")]
private struct Element
{
internal T Value;
}
...
private readonly Element[] _items;
この目的は何ですか。
しかし、そこにある 'ObjectPool'は配列に要素を設定しません。構造体の配列はゼロのstructインスタンスで初期化されているという事実に依存しています。 –
さて、*何かが 'Value'を設定しようとしています。何もその価値を設定していない場合、何がポイントですか?そのコードはここでは表示されていません。 – usr
はい一部のコードでは、フィールド 'Value'が設定されています。しかし、配列内の要素を上書きするものはありません。 'Value'がフィールドであるとすれば、実行時に型チェックはありません。それはあなたの答えを無効にします。ではない? –