Aracılığıyla paylaş


ref ve out Kullanarak Dizileri Geçirme (C# Programlama Kılavuzu)

Tüm out parametreleri gibi, kullanılmadan önce herhangi bir dizi türünde bir out parametresi atanmalıdır; yani, aranan tarafından atanmalıdır.Örneğin:

static void TestMethod1(out int[] arr)
{
    arr = new int[10];   // definite assignment of arr
}

Tüm ref parametreleri gibi, herhangi bir dizi türünde bir ref parametresi arayan tarafından kesinlikle atanmalıdır.Bu nedenle, kesinlikle Aranan tarafından atanmasına gerek yoktur.Herhangi bir dizi türünde bir ref parametresi çağrının bir sonucu olarak değiştirilebilir.Örneğin, diziye null değeri atanabilir veya farklı bir dizi olarak başlatılabilir.Örneğin:

static void TestMethod2(ref int[] arr)
{
    arr = new int[10];   // arr initialized to a different array
}

Aşağıdaki iki örnek, dizileri yöntemlere geçirirken kullanıldığında out ve ref arasındaki farkı gösterir.

Örnek

Bu örnekte, dizi theArray arayanda (Main yöntemi) bildirilir ve FillArray yönteminde başlatılır.Sonra, dizi öğeleri arayana döndürülür ve görüntülenir.

class TestOut
{
    static void FillArray(out int[] arr)
    {
        // Initialize the array:
        arr = new int[5] { 1, 2, 3, 4, 5 };
    }

    static void Main()
    {
        int[] theArray; // Initialization is not required 

        // Pass the array to the callee using out:
        FillArray(out theArray);

        // Display the array elements:
        System.Console.WriteLine("Array elements are:");
        for (int i = 0; i < theArray.Length; i++)
        {
            System.Console.Write(theArray[i] + " ");
        }

        // Keep the console window open in debug mode.
        System.Console.WriteLine("Press any key to exit.");
        System.Console.ReadKey();
    }
}
    /* Output:
        Array elements are:
        1 2 3 4 5        
    */

Bu örnekte, theArray dizisi arayanda başlatılır (Main yöntemi ve ref parametresi kullanılarak FillArray yöntemine geçirilir.Bazı dizi öğeleri FillArray yönteminde güncellenir.Sonra, dizi öğeleri arayana döndürülür ve görüntülenir.

class TestRef
{
    static void FillArray(ref int[] arr)
    {
        // Create the array on demand: 
        if (arr == null)
        {
            arr = new int[10];
        }
        // Fill the array:
        arr[0] = 1111;
        arr[4] = 5555;
    }

    static void Main()
    {
        // Initialize the array: 
        int[] theArray = { 1, 2, 3, 4, 5 };

        // Pass the array using ref:
        FillArray(ref theArray);

        // Display the updated array:
        System.Console.WriteLine("Array elements are:");
        for (int i = 0; i < theArray.Length; i++)
        {
            System.Console.Write(theArray[i] + " ");
        }

        // Keep the console window open in debug mode.
        System.Console.WriteLine("Press any key to exit.");
        System.Console.ReadKey();
    }
}
    /* Output:
        Array elements are:
        1111 2 3 4 5555
    */

Ayrıca bkz.

Başvuru

ref (C# Başvurusu)

out parametresi değiştiricisi (C# Başvurusu)

Diziler (C# Programlama Kılavuzu)

Tek Boyutlu Diziler (C# Programlama Kılavuzu)

Çok Boyutlu Diziler (C# Programlama Kılavuzu)

Basit Diziler (C# Programlama Kılavuzu)

Kavramlar

C# Programlama Kılavuzu