私は Jon Skeet による Edulinq を調べていて、次のコード (ページ 23) に出くわしました。このコードでは、彼Empty()
は Linq のオペレーターのキャッシュメカニズムを実装しています。
private static class EmptyHolder<T>
{
internal static readonly T[] Array = new T[0];
}
私の質問は、これが実際にどのようにArray
変数をキャッシュするのですか?
オプションで、CLR でどのように機能しますか?
編集:また、それに続いて、配列を返すことに対する反乱があったと彼は述べています。配列を返してはいけないのはなぜですか (サイズが 0 であっても)?