interior_ptr (C++/CLI)interior_ptr (C++/CLI)

Wewnętrzny wskaźnik deklaruje wskaźnik do wewnątrz typu referencyjnego, ale nie do samego obiektu.An interior pointer declares a pointer to inside a reference type, but not to the object itself. Wewnętrzny wskaźnik może wskazywać na dojście do odwołania, typ wartości, dojście do typu opakowanego, składową typu zarządzanego lub do elementu tablicy zarządzanej.An interior pointer can point to a reference handle, value type, boxed type handle, member of a managed type, or to an element of a managed array.

Wszystkie środowiska wykonawczeAll Runtimes

(Nie ma żadnych uwag dla tej funkcji języka, które mają zastosowanie do wszystkich środowisk uruchomieniowych).(There are no remarks for this language feature that apply to all runtimes.)

Środowisko wykonawcze systemu WindowsWindows Runtime

(Nie ma żadnych uwag dla tej funkcji języka, które mają zastosowanie tylko do środowisko wykonawcze systemu Windows).(There are no remarks for this language feature that apply to only the Windows Runtime.)

WymaganiaRequirements

Opcja kompilatora: /ZWCompiler option: /ZW

środowiska uruchomieniowe w trakcie wykonaniaCommon Language Runtime

Poniższy przykład składni ilustruje wewnętrzny wskaźnik.The following syntax example demonstrates an interior pointer.

SkładniaSyntax

cli::interior_ptr<cv_qualifier type> var = &initializer;

ParametryParameters

cv_qualifiercv_qualifier
const lub volatile kwalifikatory.const or volatile qualifiers.

Wprowadźtype
Typ inicjatora.The type of initializer.

funkcjęvar
Nazwa zmiennej interior_ptr .The name of the interior_ptr variable.

składinitializer
Składową typu referencyjnego, elementu tablicy zarządzanej lub dowolnego innego obiektu, który można przypisać do wskaźnika natywnego.A member of a reference type, element of a managed array, or any other object that you can assign to a native pointer.

UwagiRemarks

Natywny wskaźnik nie może śledzić elementu, ponieważ jego lokalizacja zmienia się w zarządzanym stosie, co wynika z przenoszonej instancji obiektu modułu zbierającego elementy bezużyteczne.A native pointer is not able to track an item as its location changes on the managed heap, which results from the garbage collector moving instances of an object. Aby wskaźnik prawidłowo odwoływał się do wystąpienia, środowisko uruchomieniowe musi zaktualizować wskaźnik do nowo położeniu obiektu.In order for a pointer to correctly refer to the instance, the runtime needs to update the pointer to the newly positioned object.

Interior_ptr reprezentuje nadzbiór funkcji wskaźnika natywnego.An interior_ptr represents a superset of the functionality of a native pointer. W związku z tym wszystkie elementy, które mogą być przypisane do wskaźnika natywnego, można także przypisać do interior_ptr.Therefore, anything that can be assigned to a native pointer can also be assigned to an interior_ptr. Wewnętrzny wskaźnik jest dozwolony do wykonywania tego samego zestawu operacji jako wskaźników natywnych, w tym porównania i arytmetycznego wskaźnika.An interior pointer is permitted to perform the same set of operations as native pointers, including comparison and pointer arithmetic.

Wewnętrzny wskaźnik można zadeklarować tylko na stosie.An interior pointer can only be declared on the stack. Wewnętrzny wskaźnik nie może być zadeklarowany jako element członkowski klasy.An interior pointer cannot be declared as a member of a class.

Ponieważ wewnętrzne wskaźniki istnieją tylko na stosie, pobranie adresu wskaźnika wewnętrznego daje niezarządzany wskaźnik.Since interior pointers exist only on the stack, taking the address of an interior pointer yields an unmanaged pointer.

interior_ptr ma niejawną konwersję na bool , która umożliwia korzystanie z instrukcji warunkowych.interior_ptr has an implicit conversion to bool, which allows for its use in conditional statements.

Aby uzyskać informacje na temat sposobu deklarowania wewnętrznego wskaźnika, który wskazuje na obiekt, którego nie można przenieść na stertie zebranych elementów bezużytecznych, zobacz pin_ptr.For information on how to declare an interior pointer that points into an object that cannot be moved on the garbage-collected heap, see pin_ptr.

interior_ptr znajduje się w przestrzeni nazw interfejsu wiersza polecenia.interior_ptr is in the cli namespace. Aby uzyskać więcej informacji , zobacz przestrzenie nazw platform, Default i CLI .See Platform, default, and cli Namespaces for more information.

Aby uzyskać więcej informacji na temat wewnętrznych wskaźników, zobacz.For more information on interior pointers, see

WymaganiaRequirements

Opcja kompilatora: /clrCompiler option: /clr

PrzykładyExamples

Poniższy przykład pokazuje sposób deklarowania i używania wewnętrznego wskaźnika w typie referencyjnym.The following sample shows how to declare and use an interior pointer into a reference type.

// interior_ptr.cpp
// compile with: /clr
using namespace System;

ref class MyClass {
public:
   int data;
};

int main() {
   MyClass ^ h_MyClass = gcnew MyClass;
   h_MyClass->data = 1;
   Console::WriteLine(h_MyClass->data);

   interior_ptr<int> p = &(h_MyClass->data);
   *p = 2;
   Console::WriteLine(h_MyClass->data);

   // alternatively
   interior_ptr<MyClass ^> p2 = &h_MyClass;
   (*p2)->data = 3;
   Console::WriteLine((*p2)->data);
}
1
2
3

Zobacz teżSee also

Rozszerzenia składników dla platform .NET i platformy UWPComponent Extensions for .NET and UWP