次の方法で共有


ILGenerator.DeclareLocal メソッド

定義

ローカル変数を宣言します。

オーバーロード

DeclareLocal(Type, Boolean)

指定した型のローカル変数を宣言し、オプションでその変数が参照するオブジェクトを固定します。

DeclareLocal(Type)

指定した型のローカル変数を宣言します。

DeclareLocal(Type, Boolean)

ソース:
ILGenerator.cs
ソース:
ILGenerator.cs
ソース:
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 で表されていません。

注釈

ローカル変数は、現在の字句スコープで作成されます。たとえば、コードがループ (For Visual Basic のループ) でfor出力されている場合、変数のスコープはループです。

アンセーフ コードでは、オブジェクトをアンマネージド ポインターで参照するには、その前にピン留めする必要があります。 参照先オブジェクトはピン留めされていますが、ガベージ コレクションでは移動できません。

適用対象

DeclareLocal(Type)

ソース:
ILGenerator.cs
ソース:
ILGenerator.cs
ソース:
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)

注釈

ローカル変数は、現在の字句スコープで作成されます。たとえば、コードがループ (For Visual Basic のループ) でfor出力されている場合、変数のスコープはループです。

このオーバーロードで作成されたローカル変数はピン留めされません。 アンマネージド ポインターで使用する固定変数を作成するには、 メソッドのオーバーロードを DeclareLocal(Type, Boolean) 使用します。

適用対象