Métodos (Guia de programação do C#)

A método é um bloco de código que contém uma série de instruções.Um programa faz com que as instruções para ser executado por chamar o método e especificar qualquer necessários argumentos do método.Em translation from VPE for Csharp, cada instrução executada é executada no contexto de um método.O método Main é o ponto de entrada para cada aplicativo translation from VPE for Csharp e ele é chamado pelo common linguagem tempo de execução (CLR) quando o programa é iniciado.

Observação:

Isso tópico Discute métodos nomeados.Para obter mais informações sobre funções anônimas, see Funções anônimo (guia de programação translation from VPE for Csharp).

Assinaturas de método

Métodos declarados em um classe or struct especificando o nível de acesso, sistema autônomo public ou private, modificadores opcionais, sistema autônomo abstract ou sealed, o valor retornado, o nome do método e parâmetros do método. Juntas, as partes a seguir é o assinatura do método.

Observação:

Um tipo de retorno de um método não é parte da assinatura do método para fins de sobrecarga de método.No entanto, é parte da assinatura do método ao determinar a compatibilidade entre um delegado e o método que ele aponta.

Parâmetros de método são colocados entre parênteses e são separados por vírgulas.Parênteses vazios indicam que o método requer sem parâmetros.Essa classe contém três métodos:

abstract class Motorcycle
{
    // Anyone can call this.
    public void StartEngine() {/* Method statements here */ }

    // Only derived classes can call this.
    protected void AddGas(int gallons) { /* Method statements here */ }

    // Derived classes can override the base class implementation.
    public virtual int Drive(int miles, int speed) { /* Method statements here */ return 1; }

    // Derived classes must implement this.
    public abstract double GetTopSpeed(); 
}

Acesso de método

Chamar um método em um objeto é como acessar um campo.Após o nome do objeto, adicione um período, o nome do método e parênteses.Argumentos são listados dentro dos parênteses e são separados por vírgulas.sistema autônomo métodos do Motorcycle a classe pode ser chamada, portanto, sistema autônomo no exemplo a seguir:

class TestMotorcycle : Motorcycle
{

    public override double GetTopSpeed()
    {
        return 108.4;
    }

    static void Main()
    {

        TestMotorcycle moto = new TestMotorcycle();

        moto.StartEngine();
        moto.AddGas(15);
        moto.Drive(5, 20);
        double speed = moto.GetTopSpeed();
        Console.WriteLine("My top speed is {0}", speed);            
    }
}

Parâmetros do método vs.Argumentos

A definição do método Especifica os nomes e tipos de qualquer parâmetros necessários.Ao chamar o método de chamadas de código, ele fornece valores concretas chamados argumentos para cada parâmetro.sistema autônomo argumentos devem ser compatível com o tipo de parâmetro, mas o nome arument (se houver) usado no código de chamada não tem o mesmo parâmetro denominado definido no método.Por exemplo:

public void Caller()
{
    int numA = 4;
    // Call with an int variable.
    int productA = Square(numA);

    int numB = 32;
    // Call with another int variable.
    int productB = Square(numB);

    // Call with an integer literal.
    int productC = Square(12);

    // Call with an expression that evaulates to int.
    productC = Square(productA * 3);
}

int Square(int i)
{
    // Store input argument in a local variable.
    int input = i;
    return input * input;
}

Passando por referência vs.Passagem por valor

Por padrão, quando um tipo de valor é passado para um método, uma cópia é passada em vez do próprio objeto.Portanto, alterações para o argumento não terão efeito na cópia do original no método de chamada.Você pode passar um tipo de valor por referência usando a palavra-chave ref.Para obter mais informações, consulte Passando parâmetros de tipo de valor (guia de programação translation from VPE for Csharp).Para obter uma lista dos tipos de valor interno, consulte Tabela de tipos de valor (translation from VPE for Csharp Reference).

Rtipos de eference são passados por referência.Quando um objeto de um tipo de referência é passado para um método, os pontos de referência para o objeto original, não uma cópia.As alterações feitas a essa referência, portanto, serão refletidas no método de chamada.Um tipo de referência é criado usando o class palavra-chave sistema autônomo no exemplo a seguir:

public class SampleRefType
{
    public int value;
}

Agora, se um objeto que se baseia a esse tipo é passado para um método, o objeto será passado por referência.Por exemplo:

public static void TestRefType()
{
    SampleRefType rt = new SampleRefType();
    rt.value = 44;
    ModifyObject(rt);
    Console.WriteLine(rt.value);
}
static void ModifyObject(SampleRefType obj)
{
    obj.value = 33;
}

Este exemplo faz essencialmente a mesma coisa que o exemplo anterior.Mas, como um tipo de referência é usado, a modificação feita por ModifyObject é feita para o objeto que é criado no TestRefType método. The TestRefType método portanto exibirá o valor 33.

Para obter mais informações, consulte Passando parâmetros de tipo de referência (guia de programação translation from VPE for Csharp) e Tipos de referência (referência C#).

Retornar valores

Métodos podem retornar um valor para o chamador.Se o retorno digitar, o tipo listado antes do nome do método, não é void, o método pode retornar o valor usando o return palavra-chave. Uma demonstrativo com o return palavra-chave seguido por um valor que coincida com o tipo de retorno retornará esse valor para o chamador do método. The return palavra-chave também interrompe a execução do método. Se o tipo de retorno é void, um return demonstrativo sem um valor ainda é útil para interromper a execução do método. Sem o return palavra-chave, o método irá parar quando atingir o participante do bloco de código em execução. Métodos com um não-void retornam tipo são necessários para usar o return palavra-chave para retornar um valor. Por exemplo, esses dois métodos de usam o return palavra-chave para retornar inteiros:

class SimpleMath
{
    public int AddTwoNumbers(int number1, int number2)
    {
        return number1 + number2;
    }

    public int SquareANumber(int number)
    {
        return number * number;
    }
}

Para usar um valor retornado de um método, o método de telefonar pode usar a telefonar do método próprio em qualquer lugar que um valor do mesmo tipo seria suficiente.Você também pode atribuir o valor retornado a uma variável.Por exemplo, os seguintes exemplos de dois código realizar a mesma meta:

int result = obj.AddTwoNumbers(1, 2);
obj.SquareANumber(result);
obj.SquareANumber(obj.AddTwoNumbers(1, 2));

Usando uma variável local, nesse caso, resultarmazenar um valor é opcional. Ele pode ajudar a legibilidade do código ou pode ser necessário se você precisar armazenar o valor do argumento para o escopo inteiro do método original.

Para obter mais informações, consulte retornar (translation from VPE for Csharp Reference).

Especificação da linguagem C#

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

  • 1.6.6 Métodos

  • 10.6 Métodos

Consulte também

Conceitos

Guia de Programação C#

Referência

Classes e estruturas (guia de programação translation from VPE for Csharp)

Modificadores de acesso (guia de programação C#)

Classes estáticas e membros de classe estáticos (guia de programação C#)

Herança (Guia de programação C#)

Abstrato e Sealed classes e membros de classe (guia de programação C#)

params (translation from VPE for Csharp Reference)

retornar (translation from VPE for Csharp Reference)

check-out (translation from VPE for Csharp Reference)

REF (translation from VPE for Csharp Reference)

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