MethodBody.InitLocals Özellik

Tanım

Yöntem gövdesindeki yerel değişkenlerin türleri için varsayılan değerlere başlatılıp başlatılmadığını belirten bir değer alır.

public virtual bool InitLocals { get; }
public bool InitLocals { get; }

Özellik Değeri

true yöntem gövdesi başvuru türleri için yerel değişkenlerin null başlatıldığı kodu veya değer türleri için sıfır başlatılan değeri içeriyorsa; aksi takdirde, false.

Örnekler

Aşağıdaki kod örneği adlı MethodBodyExample bir test yöntemini tanımlar ve yerel değişken bilgilerini ve özel durum işleme yan tümcelerini görüntüler. MethodBase.GetMethodBody yöntemi, test yöntemi için bir MethodBody nesne almak için kullanılır. MaxStackSize ve InitLocals özellikleri görüntülenir.

Bu kod örneği, sınıfı için MethodBody sağlanan daha büyük bir örneğin parçasıdır.

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);
    }

    // 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.");
            }
        }

        // This filter clause selects only exceptions that derive
        // from the ArgumentException class.
        // Other exceptions, including ArgumentException itself,
        // are not handled by this filter clause.
        catch (ArgumentException ex) when (ex.GetType().IsSubclassOf(typeof(ArgumentException)))
        {
            Console.WriteLine("Filter clause caught: {0}", ex.GetType());
        }

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

Açıklamalar

InitLocals özelliği açıkça başlatılmayan değişkenleri, yani C# veya Dim x As Integer Visual Basic gibi int x; söz dizimi ile bildirilen değişkenleri ifade eder.

Başvuru değişkenleri varsayılan olarak olarak null olarak başlatılır. Sayısal değişkenler sıfır olarak başlatılır.

Şunlara uygulanır

Ürün Sürümler
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1