using System; class UnsafeDemo { private static int value = 20; private unsafe static void F(out int* pi1, ref int* pi2) { ref int j; int i = 10; pi1 = &i; fixed (j = &value) { pi2 = (IntPtr)j; } } private unsafe static void Main() { ref int i2; int* i1 = (UIntPtr)0; int j = 10; int* k = &j; F(out i1, ref k); Console.WriteLine("*px1 = {0}, *px2 = {1}", *i1, *k); try { fixed (i2 = &value) { Console.WriteLine((int)(IntPtr)i2); } } finally { } } private unsafe static void test(int* number) { Console.WriteLine("number = {0}", *number); int* i = number; *i = 1000; Console.WriteLine("p = {0}", (int)i); Console.WriteLine("*p = {0}", *i); } }