REF (translation from VPE for Csharp Reference)

The ref palavra-chave faz com que os argumentos a serem passados por referência. O efeito é que todas as alterações do parâmetro no método sejam refletidas nessa variável ao controle passará de volta para o método de chamada.Para usar um ref parâmetro, a definição do método e o método de chamada deve usar explicitamente a ref palavra-chave. Por exemplo:

class RefExample
{
    static void Method(ref int i)
    {
        i = 44;
    }
    static void Main()
    {
        int val = 0;
        Method(ref val);
        // val is now 44
    }
}

Um argumento passado para um ref parâmetro deve ser inicializado pela primeira vez. Esse processo difere de out, cujo argumento não tem que ser explicitamente inicializados antes que eles sejam passados. Para obter mais informações, consulte check-out.

Embora ref e out são tratados diferente no time de execução, eles são tratados o mesmo em time de compilar. Portanto, métodos não podem ser sobrecarregados se um método leva um ref argumento e a Outros usa uma out argumento. Esses dois métodos, por exemplo, são idênticos em relação a compilar, para que esse código não será compilado:

class CS0663_Example
{
    // Compiler error CS0663: "Cannot define overloaded 
    // methods that differ only on ref and out".
    public void SampleMethod(out int i) { }
    public void SampleMethod(ref int i) { }
}

Sobrecarga pode ser feita, no entanto, se um método usa um ref ou out argumento e o Outros utiliza nem sistema autônomo no exemplo a seguir:

class RefOverloadExample
{
    public void SampleMethod(int i) { }
    public void SampleMethod(ref int i) { }
}

Propriedades não são variáveis e, portanto, não podem ser passadas sistema autônomo ref parâmetros.

Para obter informações sobre como passar matrizes, consulte Passando usando matrizes ref e out (translation from VPE for Csharp Programming guia).

Exemplo

Tipos de valor de passar por referência, conforme demonstrado neste tópico, é útil, mas ref também é útil para passar sistema autônomo tipos de referência. Isso permite que os métodos chamados modificar o objeto ao qual a referência se refere como a própria referência está sendo passada por referência.O exemplo a seguir mostra que quando digita uma referência é transmitido sistema autônomo um ref parâmetro, o próprio objeto pode ser alterado.

class RefExample2
{
    static void Method(ref string s)
    {
        s = "changed";
    }
    static void Main()
    {
        string str = "original";
        Method(ref str);
        Console.WriteLine(str);
    }
}
// Output: changed

Especificação da linguagem C#

Para obter mais informações, consulte as seções a seguir no Especificação da linguagem C#:

  • 5.1.5 Parâmetros de referência

  • 10.6.1.2 Parâmetros de referência

Consulte também

Conceitos

Guia de Programação C#

Referência

Passando parâmetros (guia de programação translation from VPE for Csharp)

Parâmetros do método (translation from VPE for Csharp Reference)

Palavras-chave C#

Outros recursos

Referência C#