LocalVariableInfo Class
Discovers the attributes of a local variable and provides access to local variable metadata.
Assembly: mscorlib (in mscorlib.dll)
| Name | Description | |
|---|---|---|
![]() | LocalVariableInfo() | Initializes a new instance of the LocalVariableInfo class. |
| Name | Description | |
|---|---|---|
![]() | IsPinned | Gets a Boolean value that indicates whether the object referred to by the local variable is pinned in memory. |
![]() | LocalIndex | Gets the index of the local variable within the method body. |
![]() | LocalType | Gets the type of the local variable. |
| Name | Description | |
|---|---|---|
![]() | Equals(Object) | Determines whether the specified object is equal to the current object.(Inherited from Object.) |
![]() | Finalize() | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.(Inherited from Object.) |
![]() | GetHashCode() | Serves as the default hash function. (Inherited from Object.) |
![]() | GetType() | |
![]() | MemberwiseClone() | |
![]() | ToString() | Returns a user-readable string that describes the local variable.(Overrides Object.ToString().) |
To get a list of local variables in a method, use the MethodBody.LocalVariables property. Use the MethodBase.GetMethodBody method to obtain the MethodBody for a MethodInfo object.
Note |
|---|
Local variable names are not persisted in metadata. In Microsoft intermediate language (MSIL), local variables are accessed by their position in the local variable signature. |
The following example defines a test method named MethodBodyExample, and displays its local variable information. The GetMethodBody method is used to obtain a MethodBody object for the test method. The LocalVariables property is then used to obtain a list of LocalVariableInfo objects and to display their types and index order.
This code example is part of a larger example provided for the MethodBody class.
using System; using System.Reflection; public class Example { public static void Main() { // Get method body information. MethodInfo mi = typeof(Example).GetMethod("MethodBodyExample"); MethodBody mb = mi.GetMethodBody(); Console.WriteLine("\r\nMethod: {0}", mi); // Display the general information included in the // MethodBody object. Console.WriteLine(" Local variables are initialized: {0}", mb.InitLocals); Console.WriteLine(" Maximum number of items on the operand stack: {0}", mb.MaxStackSize);
// Display information about the local variables in the // method body. Console.WriteLine(); foreach (LocalVariableInfo lvi in mb.LocalVariables) { Console.WriteLine("Local variable: {0}", lvi); }
}
// The Main method contains code to analyze this method, using
// the properties and methods of the MethodBody class.
public void MethodBodyExample(object arg)
{
// Define some local variables. In addition to these variables,
// the local variable list includes the variables scoped to
// the catch clauses.
int var1 = 42;
string var2 = "Forty-two";
try
{
// Depending on the input value, throw an ArgumentException or
// an ArgumentNullException to test the Catch clauses.
if (arg == null)
{
throw new ArgumentNullException("The argument cannot be null.");
}
if (arg.GetType() == typeof(string))
{
throw new ArgumentException("The argument cannot be a string.");
}
}
// There is no Filter clause in this code example. See the Visual
// Basic code for an example of a Filter clause.
// This catch clause handles the ArgumentException class, and
// any other class derived from Exception.
catch(Exception ex)
{
Console.WriteLine("Ordinary exception-handling clause caught: {0}",
ex.GetType());
}
finally
{
var1 = 3033;
var2 = "Another string.";
}
}
}
// This code example produces output similar to the following:
//
//Method: Void MethodBodyExample(System.Object)
// Local variables are initialized: True
// Maximum number of items on the operand stack: 2
Available since 8
.NET Framework
Available since 2.0
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1
Any public static ( Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.



