コード例 #1
0
        static public IEnumerable <T> UseEnumerate <T>(this ListPool <T> item, Process <List <T> > process)
        {
            using (Pooled <List <T> > pooled = item.Withdraw())
            {
                List <T> list = pooled.Get();

                process(list);

                foreach (T sub_item in list)
                {
                    yield return(sub_item);
                }
            }
        }
コード例 #2
0
        static private IEnumerable <T> UseEnumerate <T>(this ArrayPool <T> item, ArrayInitializer <T> initializer, ArrayFinalizer <T> finalizer)
        {
            using (Pooled <T[]> pooled = item.Withdraw())
            {
                T[] array  = pooled.Get();
                int length = initializer(ref array);

                try
                {
                    for (int i = 0; i < length; i++)
                    {
                        yield return(array[i]);
                    }
                }
                finally
                {
                    finalizer(ref array, length);
                    pooled.Set(array);
                }
            }
        }
コード例 #3
0
 public J Use <J>(Operation <J, T> operation)
 {
     using (Pooled <T> pooled = Withdraw())
         return(operation(pooled.Get()));
 }
コード例 #4
0
 public void Use(Process <T> process)
 {
     using (Pooled <T> pooled = Withdraw())
         process(pooled.Get());
 }