Example #1
0
        public static void GetPointerObject <T>(this T[] array, Action <ArrayGetPointerWithSafe <T> > action) where T : unmanaged
        {
            var _ = new ArrayGetPointerWithSafe <T>(array);

            action(_);
            _.Dispose();
        }
Example #2
0
        unsafe static void Main(string[] args)
        {
            float[] array = Enumerable.Range(1, 100).Select(x => (float)x).ToArray();

            //自分で開放
            var    arrayPtro = new ArrayGetPointerWithSafe <float>(array);
            float *arrayPtr  = arrayPtro.ptr;

            for (int i = 0; i < array.Length; i++)
            {
                Console.WriteLine(*(arrayPtr + i));
            }
            arrayPtro.Dispose();

            //自動解放
            array.GetPointerObject(tmp =>
            {
                float *pa = tmp.ptr;
                for (int i = 0; i < tmp.Length; i++)
                {
                    Console.WriteLine(*(pa + i));
                }
            });
        }