C# allows you to write "unsafe" code.
Unsafe code does not execute under the full management of the Common Language Runtime (CLR).
Unsafe code often involves the use of pointers.
Pointers are a bit like references in C#.
The main difference is that a pointer can point anywhere in memory
A reference always points to an object of its type.
To compile unmanaged code, you must use the /unsafe compiler option.