ILGenerator.DeclareLocal メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
ローカル変数を宣言します。
オーバーロード
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
パラメーター
- pinned
- Boolean
メモリ内でオブジェクトを固定する場合は true
。それ以外の場合は false
。
戻り値
ローカル変数を表す LocalBuilder オブジェクト。
例外
localType
が null
です。
外側の型が 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
が null
です。
外側の型が 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) 使用します。
適用対象
.NET