Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All

MethodBody.LocalVariables Property

Gets the list of local variables declared in the method body.

Namespace:  System.Reflection
Assembly:  mscorlib (in mscorlib.dll)

public virtual IList<LocalVariableInfo> LocalVariables { get; }

Property Value

Type: System.Collections.Generic.IList<LocalVariableInfo>
An IList<T> of LocalVariableInfo objects that describe the local variables declared in the method body.

You do not need the metadata token for the local variable signature provided by the LocalSignatureMetadataToken property.

The following code example defines a test method named MethodBodyExample and displays its local variable information. The MethodBase.GetMethodBody method is used to obtain a MethodBody object for the test method. The LocalVariables property is used to obtain a list of LocalVariableInfo objects.

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


...


// 
//Local variable: System.Int32 (0) 
//Local variable: System.String (1) 
//Local variable: System.Exception (2) 
//Local variable: System.Boolean (3)

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1
Show:
© 2015 Microsoft