Example #1
0
        static void Main(string[] args)
        {
            Demo1 d1 = new Demo1();

            d1.Test();

            Demo2 d2 = new Demo2();

            //d2.Test();
            d2.Test3();
            GC.Collect();

            Demo3 d3 = new Demo3();

            d3.Test();

            Demo4 d4 = new Demo4();

            d4.Test();

            Demo5 d5 = new Demo5();

            d5.Test();

            d5.Test2();
            d5.Test3();

            Demo6 d6 = new Demo6();

            d6.Test();



            Console.ReadLine();
        }
Example #2
0
        public void Test3()
        {
            // matrix ByVal
            const int DIM = 5;

            int[,] matrix = new int[DIM, DIM];

            Console.WriteLine("\n\nMatrix before call:");
            for (int i = 0; i < DIM; i++)
            {
                for (int j = 0; j < DIM; j++)
                {
                    matrix[i, j] = j;
                    Console.Write(" " + matrix[i, j]);
                }

                Console.WriteLine("");
            }

            int sum3 = Demo5.TestMatrixOfInts(matrix, DIM);

            Console.WriteLine("\nSum of elements:" + sum3);
            Console.WriteLine("\nMatrix after call:");
            for (int i = 0; i < DIM; i++)
            {
                for (int j = 0; j < DIM; j++)
                {
                    Console.Write(" " + matrix[i, j]);
                }

                Console.WriteLine("");
            }
        }
Example #3
0
        static void Main(string[] args)
        {
            TestOne();

            //获取系统时间函数
            Demo1 d1 = new Demo1();

            d1.Test();

            //托管内存和非托管内存之间的创建和拷贝
            Demo2 d2 = new Demo2();

            //d2.Test();
            d2.Test3();
            GC.Collect();

            //创建非托管程序中指针的对应托管指针,从而为后续访问非托管对象提供方便。
            Demo3 d3 = new Demo3();

            d3.Test();

            //回调函数的示例
            Demo4 d4 = new Demo4();

            d4.Test();


            Demo5 d5 = new Demo5();

            d5.Test();

            d5.Test2();
            d5.Test3();

            //字符串数组
            Demo6 d6 = new Demo6();

            d6.Test();



            Console.ReadLine();
        }
Example #4
0
        public void Test2()
        {
            int[] array2 = new int[10];
            int   size   = array2.Length;

            Console.WriteLine("\n\nInteger array passed ByRef before call:");
            for (int i = 0; i < array2.Length; i++)
            {
                array2[i] = i;
                Console.Write(" " + array2[i]);
            }
            //两种非托管内存申请方式,对于简单的字节内存,可以使用Marshal.AllocHGlobal,对于创建复杂类的内存,采用类似Demo5.NewArray方式。
            //IntPtr buffer = Demo5.NewArray(10);
            IntPtr buffer = Marshal.AllocHGlobal(10);

            Marshal.Copy(array2, 0, buffer, 10);

            int sum2 = Demo5.TestRefArrayOfInts(ref buffer, ref size);

            Console.WriteLine("\nInteger array passed ByRef after call:");
            Console.WriteLine("\nSum of elements:" + sum2);
            if (size > 0)
            {
                int[] arrayRes = new int[size];
                //从非托管拷贝到托管内存。
                Marshal.Copy(buffer, arrayRes, 0, size);

                foreach (int i in arrayRes)
                {
                    Console.Write(" " + i);
                }
            }
            else
            {
                Console.WriteLine("\nArray after call is empty");
            }
            //Demo5.DeleteArray(buffer);
            Marshal.FreeHGlobal(buffer);
        }
Example #5
0
        public void Test()
        {
            int[] array1 = new int[10];
            Console.WriteLine("Integer array passed ByVal before call:");
            for (int i = 0; i < array1.Length; i++)
            {
                array1[i] = i;
                Console.Write(" " + array1[i]);
            }
            int count = 10000;

            while (count > 0)
            {
                count--;
                int sum1 = Demo5.TestArrayOfInts(array1, array1.Length);
            }
            Console.WriteLine("\nInteger array passed ByVal after call:");
            foreach (int i in array1)
            {
                Console.Write(" " + i);
            }
        }