Typy ukazatele (C# program televize)
V kontextu unsafe může být typ ukazatele typu, zadejte hodnotu nebo typ odkazu.Deklarace typu ukazatel má jednu z těchto forem:
type* identifier;
void* identifier; //allowed but not recommended
Kterýkoli z následujících typů může být typ ukazatele:
sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, decimal, or bool.
Všechny výčtu typu.
Libovolný typ ukazatele.
Libovolný typ struct definované uživatelem, obsahující pouze nespravovaných typů polí.
Typy ukazatele nedědí z objektu a neexistují žádné převody mezi typy ukazatele a object.Ukazatele, nepodporují boxerská a unboxing.Lze však převést mezi různé ukazatele a mezi typy ukazatele a nedílnou.
Když deklarujete více ukazatelů ve stejné deklaraci * zapisuje společně s pouze základní typ není jako předponu názvu každého ukazatele.Příklad:
int* p1, p2, p3; // Ok
int *p1, *p2, *p3; // Invalid in C#
Ukazatel nelze bod nebo na odkaz struct obsahující odkazy, protože odkaz na objekt může být do koše i v případě, že je ukazatel přejdete.GC nebude sledovat, zda objekt je právě aktivní všechny typy ukazatele.
Hodnota ukazatele proměnné typu myType* je adresa proměnné typu myType.Deklarace typu ukazatel, jak ukazují následující příklady:
Příklad |
Description |
---|---|
int* p |
p je ukazatel na celé číslo |
int** p |
p je ukazatel na ukazatel na celé |
int*[] p |
p je jednorozměrná pole ukazatelů na celá čísla |
char* p |
p je ukazatel znak (Char) |
void* p |
p je ukazatel na neznámý typ |
Operátor nepřímé odkazování ukazatel * lze použít k přístupu k obsahu při umístění ukazatele proměnnou.Například zvažte následující prohlášení:
int* myVariable;
Výraz *myVariable označuje int na adrese obsažené v proměnné myVariable.
Nepřímé odkazování operátor nelze použít pro ukazatele typu void*.Však můžete použít osazení převést na jiné ukazatele typu void ukazatele a naopak.
Ukazatel může být null.Operátor nepřímé odkazování použití ukazatele null způsobí, že chování definované implementací.
Uvědomte si, že předávání ukazatelů mezi metod může způsobit nedefinované chování.Příklady jsou ukazatele návratu do místní proměnné prostřednictvím Ref nebo Out parametru nebo jako výsledek funkce.Pokud ukazatel bylo nastavení pevného bloku, může být stanovena již proměnná, na který odkazuje.
Následující tabulka uvádí operátory a příkazy, které mohou pracovat na ukazatele v kontextu unsafe:
Příkaz nebo operátor |
Pomocí |
---|---|
* |
Provádí nepřímé odkazování ukazatel. |
-> |
Člen struktura přistupuje prostřednictvím ukazatele. |
[] |
Index ukazatel. |
& |
Získá adresu proměnné. |
++ a-- |
Přírůstky a sníží ukazatele. |
+ a - |
Provede ukazatel aritmetické operace. |
==,! = <>,, < =, a > = |
Porovná ukazatele. |
stackalloc |
Přidělí paměť v zásobníku. |
fixedprohlášení |
Dočasně řeší proměnné tak, aby bylo možné najít jeho adresu. |
Specifikace jazyka C#
Další informace naleznete v tématu Specifikace jazyka C#. Specifikace jazyka je úplným a rozhodujícím zdrojem pro syntaxi a použití jazyka C#.
Viz také
Referenční dokumentace
Nebezpečný kód a ukazatele (Příručka programování C#)
Ukazatel převody (Příručka programování C#)
Ukazatel výrazy (Příručka programování C#)
Výraz stackalloc (C#-Reference)
Boxing a Unboxing (C# programování Guide)