Udostępnij za pośrednictwem


ILGenerator.DeclareLocal Metoda

Definicja

Deklaruje zmienną lokalną.

Przeciążenia

DeclareLocal(Type, Boolean)

Deklaruje zmienną lokalną określonego typu, opcjonalnie przypinając obiekt, do której odwołuje się zmienna.

DeclareLocal(Type)

Deklaruje zmienną lokalną określonego typu.

DeclareLocal(Type, Boolean)

Źródło:
ILGenerator.cs
Źródło:
ILGenerator.cs
Źródło:
ILGenerator.cs

Deklaruje zmienną lokalną określonego typu, opcjonalnie przypinając obiekt, do której odwołuje się zmienna.

public:
 virtual System::Reflection::Emit::LocalBuilder ^ DeclareLocal(Type ^ localType, bool pinned);
public:
 abstract System::Reflection::Emit::LocalBuilder ^ DeclareLocal(Type ^ localType, bool pinned);
public virtual System.Reflection.Emit.LocalBuilder DeclareLocal (Type localType, bool pinned);
public abstract System.Reflection.Emit.LocalBuilder DeclareLocal (Type localType, bool pinned);
abstract member DeclareLocal : Type * bool -> System.Reflection.Emit.LocalBuilder
override this.DeclareLocal : Type * bool -> System.Reflection.Emit.LocalBuilder
abstract member DeclareLocal : Type * bool -> System.Reflection.Emit.LocalBuilder
Public Overridable Function DeclareLocal (localType As Type, pinned As Boolean) As LocalBuilder
Public MustOverride Function DeclareLocal (localType As Type, pinned As Boolean) As LocalBuilder

Parametry

localType
Type

Type Obiekt reprezentujący typ zmiennej lokalnej.

pinned
Boolean

true aby przypiąć obiekt w pamięci; w przeciwnym razie , false.

Zwraca

LocalBuilder Obiekt reprezentujący zmienną lokalną.

Wyjątki

localType to null.

Typ zawierający został utworzony przez metodę CreateType() .

-lub-

Treść metody otaczającej została utworzona przez metodę CreateMethodBody(Byte[], Int32) .

Metoda, z którą jest skojarzona ILGenerator , nie jest reprezentowana przez element MethodBuilder.

Uwagi

Zmienna lokalna jest tworzona w bieżącym zakresie leksykalnym; na przykład jeśli kod jest emitowany w for pętli (For pętla w języku Visual Basic), zakres zmiennej to pętla.

W niebezpiecznym kodzie obiekt musi zostać przypięty, zanim będzie można odwoływać się do niego za pomocą niezarządzanego wskaźnika. Obiekt, do którego odwołuje się odwołanie, jest przypięty, ale nie może zostać przeniesiony przez odzyskiwanie pamięci.

Dotyczy

DeclareLocal(Type)

Źródło:
ILGenerator.cs
Źródło:
ILGenerator.cs
Źródło:
ILGenerator.cs

Deklaruje zmienną lokalną określonego typu.

public:
 virtual System::Reflection::Emit::LocalBuilder ^ DeclareLocal(Type ^ localType);
public:
 System::Reflection::Emit::LocalBuilder ^ DeclareLocal(Type ^ localType);
public virtual System.Reflection.Emit.LocalBuilder DeclareLocal (Type localType);
public System.Reflection.Emit.LocalBuilder DeclareLocal (Type localType);
abstract member DeclareLocal : Type -> System.Reflection.Emit.LocalBuilder
override this.DeclareLocal : Type -> System.Reflection.Emit.LocalBuilder
member this.DeclareLocal : Type -> System.Reflection.Emit.LocalBuilder
Public Overridable Function DeclareLocal (localType As Type) As LocalBuilder
Public Function DeclareLocal (localType As Type) As LocalBuilder

Parametry

localType
Type

Type Obiekt reprezentujący typ zmiennej lokalnej.

Zwraca

Zadeklarowana zmienna lokalna.

Wyjątki

localType to null.

Typ zawierający został utworzony przez metodę CreateType() .

Przykłady

W poniższym przykładzie kodu pokazano użycie DeclareLocal metody . Ten kod jest częścią większego przykładu LocalBuilder kodu dla klasy .

// Create local variables named myString and myInt.
LocalBuilder^ myLB1 = myMethodIL->DeclareLocal( String::typeid );
myLB1->SetLocalSymInfo( "myString" );
Console::WriteLine( "local 'myString' type is: {0}", myLB1->LocalType );

LocalBuilder^ myLB2 = myMethodIL->DeclareLocal( int::typeid );
myLB2->SetLocalSymInfo( "myInt", 1, 2 );
Console::WriteLine( "local 'myInt' type is: {0}", myLB2->LocalType );
// Create local variables named myString and myInt.
LocalBuilder myLB1 = myMethodIL.DeclareLocal(typeof(string));
myLB1.SetLocalSymInfo("myString");
Console.WriteLine("local 'myString' type is: {0}", myLB1.LocalType);

LocalBuilder myLB2 = myMethodIL.DeclareLocal(typeof(int));
myLB2.SetLocalSymInfo("myInt", 1, 2);
Console.WriteLine("local 'myInt' type is: {0}", myLB2.LocalType);
' Create local variables named myString and myInt.
Dim myLB1 As LocalBuilder = myMethodIL.DeclareLocal(GetType(String))
myLB1.SetLocalSymInfo("myString")
Console.WriteLine("local 'myString' type is: {0}", myLB1.LocalType)

Dim myLB2 As LocalBuilder = myMethodIL.DeclareLocal(GetType(Integer))
myLB2.SetLocalSymInfo("myInt", 1, 2)
Console.WriteLine("local 'myInt' type is: {0}", myLB2.LocalType)

Uwagi

Zmienna lokalna jest tworzona w bieżącym zakresie leksykalnym; na przykład jeśli kod jest emitowany w for pętli (For pętla w języku Visual Basic), zakres zmiennej to pętla.

Zmienna lokalna utworzona z tym przeciążeniem nie jest przypięta. Aby utworzyć przypiętą zmienną do użycia ze wskaźnikami niezarządzanymi, użyj DeclareLocal(Type, Boolean) przeciążenia metody.

Dotyczy