ILGenerator.DeclareLocal 方法

定义

声明局部变量。

重载

DeclareLocal(Type, Boolean)

声明指定类型的局部变量,还可以选择固定该变量所引用的对象。

DeclareLocal(Type)

声明指定类型的局部变量。

DeclareLocal(Type, Boolean)

Source:
ILGenerator.cs
Source:
ILGenerator.cs
Source:
ILGenerator.cs

声明指定类型的局部变量,还可以选择固定该变量所引用的对象。

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

参数

localType
Type

一个 Type 对象,表示局部变量的类型。

pinned
Boolean

如果要将对象固定在内存中,则为 true;否则为 false

返回

一个 LocalBuilder 对象,表示局部变量。

例外

localTypenull

包含类型已由 CreateType() 方法创建。

- 或 -

封闭方法的方法体已由 CreateMethodBody(Byte[], Int32) 方法创建。

与此 ILGenerator 关联的方法不由 MethodBuilder 来表示。

注解

局部变量是在当前词法范围内创建的;例如,如果在 Visual Basic) 的循环 (For 循环中发出for代码,则变量的作用域为 循环。

在不安全的代码中,必须先固定对象,然后才能由非托管指针引用该对象。 当引用的对象被固定时,它不能通过垃圾回收移动。

适用于

DeclareLocal(Type)

Source:
ILGenerator.cs
Source:
ILGenerator.cs
Source:
ILGenerator.cs

声明指定类型的局部变量。

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

参数

localType
Type

一个 Type 对象,表示局部变量的类型。

返回

已声明的局部变量。

例外

localTypenull

包含类型已由 CreateType() 方法创建。

示例

下面的代码示例演示如何使用 DeclareLocal 方法。 此代码是 类的较大代码示例的 LocalBuilder 一部分。

// 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)

注解

局部变量是在当前词法范围内创建的;例如,如果在 Visual Basic) 的循环 (For 循环中发出for代码,则变量的作用域为 循环。

未固定使用此重载创建的局部变量。 若要创建用于非托管指针的固定变量,请使用 DeclareLocal(Type, Boolean) 方法重载。

适用于