Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Klíčové unsafe slovo označuje nebezpečný kontext, který je nutný pro jakoukoli operaci zahrnující ukazatele. Další informace naleznete v tématu Nebezpečný kód a ukazatele.
Referenční dokumentace jazyka C# dokumentuje naposledy vydané verze jazyka C#. Obsahuje také počáteční dokumentaci k funkcím ve verzi Public Preview pro nadcházející jazykovou verzi.
Dokumentace identifikuje všechny funkce, které byly poprvé představeny v posledních třech verzích jazyka nebo v aktuálních verzích Public Preview.
Návod
Informace o tom, kdy byla funkce poprvé představena v jazyce C#, najdete v článku o historii verzí jazyka C#.
unsafe Použijte modifikátor v deklaraci typu nebo členu. Celý textový rozsah typu nebo členu je nebezpečný kontext. Například následující metoda je deklarována s modifikátorem unsafe :
unsafe static void FastCopy(byte[] src, byte[] dst, int count)
{
// Unsafe context: can use pointers here.
}
Rozsah nebezpečného kontextu se rozšiřuje ze seznamu parametrů na konec metody, takže můžete také použít ukazatele v seznamu parametrů:
unsafe static void FastCopy ( byte* ps, byte* pd, int count ) {...}
Můžete také použít nebezpečný blok k povolení používání nebezpečného kódu uvnitř tohoto bloku. Například:
unsafe
{
// Unsafe context: can use pointers here.
}
Chcete-li zkompilovat nebezpečný kód, je nutné zadat možnost kompilátoru AllowUnsafeBlocks . Modul CLR (Common Language Runtime) nemůže ověřit nebezpečný kód.
Note
Funkce Preview bezpečnosti paměti dostupná v jazyce C# 15 zužuje operace, které vyžadují unsafe kontext.
Kontext unsafe už není nutný k vytvoření ukazatele, fixed příkazu, převodu stackalloc výrazu na ukazatel a použití sizeof u nespravovaného typu.
Pouze operace, které přistupují k paměti odkazované na paměť, jako je například nepřímý ukazatel, stále vyžadují unsafe kontext. Pozdější náhled se také změní unsafe na člena, který ho označí jako nebezpečný, takže volající musí člena použít z unsafe kontextu.
Příklad
// 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
Specifikace jazyka C#
Další informace naleznete v tématu Nebezpečný kód ve specifikaci jazyka C#. Specifikace jazyka je konečným zdrojem syntaxe a použití jazyka C#.