osäker (C#-referens)
Nyckelordet unsafe
anger en osäker kontext som krävs för alla åtgärder som rör pekare. Mer information finns i Osäker kod och pekare.
Du kan använda unsafe
modifieraren i deklarationen av en typ eller en medlem. Hela textmängden för typen eller medlemmen anses därför vara en osäker kontext. Följande är till exempel en metod som deklarerats unsafe
med modifieraren:
unsafe static void FastCopy(byte[] src, byte[] dst, int count)
{
// Unsafe context: can use pointers here.
}
Omfånget för den osäkra kontexten sträcker sig från parameterlistan till slutet av metoden, så pekare kan också användas i parameterlistan:
unsafe static void FastCopy ( byte* ps, byte* pd, int count ) {...}
Du kan också använda ett osäkert block för att aktivera användning av en osäker kod i det här blocket. Till exempel:
unsafe
{
// Unsafe context: can use pointers here.
}
Om du vill kompilera osäker kod måste du ange kompilatoralternativet AllowUnsafeBlocks . Osäker kod kan inte verifieras av den vanliga språkkörningen.
Exempel
// 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
Språkspecifikation för C#
Mer information finns i Osäker kod i C#-språkspecifikationen. Språkspecifikationen är den slutgiltiga källan för C#-syntax och -användning.