The unsafe keyword denotes an unsafe context. A
unsafe context is required for any operations that you want to perfrom with
pointers. unsafe is applied as a modifier in the declaration of callable
member such as methods, properties, constructors and extenders (although static
constructors are not permitted).
static unsafe void ComplexOp()
{ //unsafe context with use of pointers
here
}
The scope of the unsafe includes the parameter list to the end of the function,
thus allowing pointers in the parameter list such as:
static unsafe void
ComplexOp(byte* ps, int count)
{ //unsafe context with use of pointers
here
}
Note: When compiling unmanaged code you have to specify the /unsafe compiler
switch.
Example:
// unsafe keyword using System;
class UnSafe
{ // unsafe method that takes a pointer
to integer (int)
unsafe static void AddPtr (int* p)
{
*p += *p;
}
unsafe public static void Main()
{ int iApples =
10;
AddPtr(&iApples);
Console.WriteLine(iApples);