unsafe это не надежный код. То есть этот код потенциально опасный. К такому коду относятся например операции с указателями. Работа у указателями является довольно тонким делом и чревата возникновением всяких там ошибок. Давайте посмотрим пример. Вот код:
using System; class MyClass { public static void Main() { int Data = 10; int* ptrData = &Data; Console.WriteLine(Data); Console.WriteLine((int)ptrData ); } }
Попробуйте его скомпилировать. Вы получите сообщение об ошибках.
Это сообщение говорит, что указатели можно использовать только в unsafe варианте. Давайте сделаем эту функцию unsafe.
using System; class MyClass { public unsafe static void Main() { int Data = 10; int* ptrData = &Data; Console.WriteLine(Data); Console.WriteLine((int)ptrData ); } }
Теперь все будет нормально.
При условии что Вы будете использовать ключ компилятора /unsafe. Вот пример Bat файла.
csc /unsafe 1.cs
Можно запускать. В результате Вы увидите и значение переменной и ее адрес.