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