Поделиться через


unsafe (Справочник по C#)

Ключевое слово unsafe обозначает небезопасный контекст, необходимый для работы с указателями. Дополнительные сведения см. в разделе Небезопасный код и указатели (Руководство по программированию в C#).

Модификатор unsafe можно использовать в объявлении типа или члена. Таким образом, вся текстовая область типа или члена считается небезопасным контекстом. Например, в следующем примере показан метод, объявленный с модификатором unsafe:

unsafe static void FastCopy(byte[] src, byte[] dst, int count)
{
    // Unsafe context: can use pointers here.
}

Область небезопасного контекста начинается от списка параметров и заканчивается концом метода, поэтому указатели можно также использовать в списке параметров:

unsafe static void FastCopy ( byte* ps, byte* pd, int count ) {...}

Кроме того, можно использовать небезопасный блок, чтобы внутри него использовать небезопасный код. Примеры.

unsafe
{
    // Unsafe context: can use pointers here.
}

Для компиляции небезопасного кода необходимо указать параметр компилятора /unsafe. Небезопасный код не проверяется средой CLR.

Пример

    // compile with: /unsafe 

    class UnsafeTest
    {
       // Unsafe method: takes pointer to int: 
       unsafe static void SquarePtrParam(int* p)
       {
          *p *= *p;
       }

       unsafe static void Main()
       {
          int i = 5;
          // Unsafe method: uses address-of operator (&):
          SquarePtrParam(&i);
          Console.WriteLine(i);
       }
    }
    // Output: 25

Спецификация языка C#

Дополнительные сведения см. в Спецификация языка C#. Спецификация языка является предписывающим источником информации о синтаксисе и использовании языка C#.

См. также

Ссылки

Ключевые слова C#

Оператор fixed (Справочник по C#)

Небезопасный код и указатели (Руководство по программированию в C#)

Буферы фиксированного размера (Руководство по программированию на C#)

Основные понятия

Руководство по программированию на C#

Другие ресурсы

Справочник по C#