Unsafe code
When we discuss the types of .NET Framework and C# language support, we refer to value types (structures) and reference types (classes). However, there is yet another type that is supported, and that is pointer types. If you are not familiar with the C or C++ programming languages and pointers in particular, then you should know pointers are like references—they are storage locations that contain the addresses of objects. A reference is basically a safe pointer that is managed by the CLR.
To work with pointer types, you must establish a so-called unsafe context. In CLR terms, this is called unverifiable code because the CLR cannot verify its safety. Unsafe code is not necessarily dangerous, but it's your entire responsibility to ensure that you do not introduce pointer errors or security risks.
In truth, there are very rare cases where you actually have to work with pointers in unsafe contexts in C#. There are two common scenarios when this could be the...