C# Passagem de parâmetros

Compartilhe este artigo!

Sobre o autor

Entre em contato...

Redação ForumWeb

Redação ForumWeb Equipe de desenvolvimento do ForumWeb.com.br, responsável pelas dicas e downloads do site.

Site do autor: http://www.forumweb.com.br

Indique este artigo

Para

Seu email

Mensagem

Fechar
Personalize sua mensagem

Código

Arquivos relacionados

  • Por enquanto, nenhum arquivo para download.

C# Passagem de parâmetros

Terça-Feira, 05 de Julho de 2011 às 16:37

Existem três formas principais de passar parâmetros para métodos em C#.

Modo comum

O modo mais utilizado e também o mais comum, é sem usar nenhum tipo de palavra-chave que modifique os parâmetros:

void MyMethod(Aluno objAluno, int num)
{
    num += 5;
    objAluno.Nome = "João";
}

No exemplo acima, o método tem dois parâmetros, um objeto Aluno e um inteiro. Observe que não existe diferente entre a passagem de valor, o inteiro, e a referencia, o objeto. Mas quaisquer operações realizadas em um tipo de valor não serão refletidas na variável original, mas no tipo de referencia sim.

int myInt = 8;
Aluno oAluno = new Aluno();
oAluno.Nome = "Mike";

MyMethod(oAluno, myInt);

No exemplo acima, o valor de oAluno será modificado, mas da variável myInt não.

Passagem por referência

Por padrão, todos os parâmetros são passados por valor (como vimos acima isto não se aplica a tipos de referência). Assim, as operações dentro do método não podem modificar a variável original. Alternativamente, os parâmetros podem ser passados por referência, usando a palavra-chave ref:

        void MyMethod(ref int num)
        {
            num += 5;
        }

E seus valores serão alterados pelo método:

int myInt = 8;

MyMethod(ref myInt);

Note que além de utilizar a palavra-chave ref no método, temos que utiliza-la, quando chamamos o método.

Agora o valor de myInt é alterado no método.

Usando palavra-chave out

A palavra-chave out tem um efeito semelhante à palavra-chave ref, com os parâmetros que são passados para o método, em ambos os casos, seus valores são alterados.

A principal diferença é que ao usar a palavra-chave out em objetos, eles não necessitam ser inicializados. No exemplo acima, ocorria um erro de compilação se o valor do inteiro não tivesse sido inicializado como no exemplo abaixo:

void MyMethod(ref int num)
{
    num += 5;
}

private void Form2_Load(object sender, EventArgs e)
{
    int myInt;

    MyMethod(ref myInt);
}

Se substituirmos a palavra-chave ref por out este problema seria resolvido.

void MyMethod(out int num)
{
    num = 8;
    num += 5;
}

private void Form2_Load(object sender, EventArgs e)
{
    int myInt;

    MyMethod(out myInt);
}

Note que o inteiro é inicializado dentro do método.

A principal função da palavra-chave out é quando você precisa executar um método que retorna vários valores, desta forma você retorna os valores diretamente nas variáveis do parâmetro.

Autor/Fonte: C# Help

Qual a sua opinião?

Comente e interaja!



Ainda sem comentários, comente!