Passando usando matrizes ref e out (translation from VPE for Csharp Programming guia)

Como todos os check-out parâmetros, um out parâmetro de um tipo de matriz deve ser atribuído antes que ele seja usado; ou seja, ele deve ser atribuído pelo computador chamado. Por exemplo:

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

Como todos os ref parâmetros, um ref parâmetro de um tipo matriz deve ser atribuído definitivamente pelo chamador. Portanto, não é necessário, sem dúvida, seja atribuída pelo computador chamado.A ref parâmetro de um tipo de matriz pode ser alterado sistema autônomo resultado da telefonar. Por exemplo, a matriz pode ser atribuída o nulo valor ou pode ser inicializado para um array diferente.Por exemplo:

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

Os exemplos de dois a seguir demonstram a diferença entre out e ref Quando usado em passar matrizes para métodos.

Exemplo

Neste exemplo, a matriz theArray declarada na (o chamador Main método) e inicializados na FillArray método. Em seguida, os elementos da matriz são retornados ao chamador e exibidos.

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

Neste exemplo, a matriz theArray é inicializado em (o chamador Main método) e passado para o FillArray método usando o ref parâmetro. Alguns dos elementos de matriz são atualizadas no FillArray método. Em seguida, os elementos da matriz são retornados ao chamador e exibidos.

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

Consulte também

Conceitos

Guia de Programação C#

Referência

Matrizes (Guia de programação do C#)

Arrays de único dimensional (guia de programação translation from VPE for Csharp)

Matrizes multidimensionais (guia de programação translation from VPE for Csharp)

Matrizes denteadas (guia de programação translation from VPE for Csharp)