unsafe (C# Başvurusu)unsafe (C# Reference)

unsafe Anahtar sözcüğü, işaretçileri içeren tüm işlemler için gerekli olan güvensiz bir bağlamı gösterir.The unsafe keyword denotes an unsafe context, which is required for any operation involving pointers. Daha fazla bilgi için güvenli olmayan kod ve işaretçiler.For more information, see Unsafe Code and Pointers.

Kullanabileceğiniz unsafe bildirimi bir tür veya üye değiştiricisi.You can use the unsafe modifier in the declaration of a type or a member. Türe veya üyeye tüm metinsel kapsamını, bu nedenle güvenli olmayan bir bağlam kabul edilir.The entire textual extent of the type or member is therefore considered an unsafe context. Örneğin, aşağıdaki ile bildirilen bir yöntemi olan unsafe değiştiricisi:For example, the following is a method declared with the unsafe modifier:

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

İşaretçiler, parametre listesinde kullanılabilmesi için güvenli olmayan bir bağlam kapsamını parametre listesinden, yöntemin sonuna kadar genişletir:The scope of the unsafe context extends from the parameter list to the end of the method, so pointers can also be used in the parameter list:

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

Güvenli olmayan bir blok, bu blok içinde bir güvenli olmayan kod kullanımını etkinleştirmek için de kullanabilirsiniz.You can also use an unsafe block to enable the use of an unsafe code inside this block. Örneğin:For example:

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

Güvenli olmayan kod olarak derlemek için belirtmelisiniz -unsafe derleyici seçeneği.To compile unsafe code, you must specify the -unsafe compiler option. Güvenli olmayan kod ortak dil çalışma zamanı tarafından doğrulanabilir değil.Unsafe code is not verifiable by the common language runtime.

ÖrnekExample

// 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# dili belirtimiC# language specification

Daha fazla bilgi için güvenli olmayan kod içinde C# dil belirtimi.For more information, see Unsafe code in the C# Language Specification. Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.The language specification is the definitive source for C# syntax and usage.

Ayrıca bkz.See also