Luiz Junior
Luiz Junior22/02/2024 19:25
Compartilhe

Funções em C#

  • #C#

Convidarei você a um exercício mental:

Imagine que lhe solicitaram construir um programa que realiza o cálculo da média inteira de 2 números, 7 e 10, respectivamente. Ora, em um ecossistema como a linguagem C#, é tão simples quanto fazer algo como:

using System;
                  
public class Program
{
  public static void Main()
  {
      int a = 7;
      int b = 15;
      
      int media = (7 + 15) / 2;
      
      Console.WriteLine(media);
  }
}

No entanto, alguns dias depois, seu cliente solicita que o mesmo cálculo de média seja replicado para outros 10 pares de valores. A princípio, poderá sentir a tentação de replicar o mesmo código outras 10 vezes, porém, existe para tal um mecanismo mais elegante: Funções.

Funções na linguagem C# podem ser definidas como blocos de código que executam uma tarefa específica e podem ser chamados de diferentes partes do programa para fim de reutilização. A palavra chave aqui é a reutilização.

Funções também podem ser denominadas métodos, em um vocabulário mais formal no contexto de Orientação a Objetos.

Para usar funções em C#, você precisará declará-las, definir parâmetros caso a mesma possua e poderá ou não retornar um valor, se necessário. Você também pode aplicar modificadores e atributos às funções para controlar seu comportamento e acesso (seguindo assim boas práticas de Orientação a Objetos). Por fim, para realmente utilizá-la, você precisará invocar sua função através de sua assinatura (em termos simples, 'a forma como você a declarou'). Seguindo o caso anterior, teríamos:

public int Media(int a, int b) //Neste exemplo, a e b são seus parâmetros. 
{
  //A palavra chave 'public' refere-se ao escopo da função
  //Já a palavra chave int, refere-se ao tipo que esta função resultará no final de sua execução
  
  //A palavra chave "return" permite que um valor seja passado como resultado da sua função para quem 'chamou'
  return (a + b) / 2;
}

//Invocando a função Media

Console.WriteLine(Media(7, 15));

Uma ênfase sobre a palavra chave public, é que podemos ter diferentes escopos para funções em C#, definindo rapidamente os mais comuns, seriam:

  • public: Nível de acesso mais amplo, qualquer outro código 'no mesmo projeto' pode invocar.
  • private: Nível de acesso mais restrito, somente código na mesma classe (ou mesma struct) pode invocar.
  • protected: Similar ao private, porém permite acesso por classes derivadas (conceito de Herança)

Para não alongar muito a explicação sobre escopos, recomendo a pesquisa em paralelo sobre Escopos no contexto de Orientação a Objetos. É extremamente interessante!

No entanto, talvez pela natureza simples deste exemplo, um outro fator interessante tenha passado despercebido: Utilizar funções é uma ótima forma de proporcionar capacidade de manutenção ao seu código. Imagine no cenário anterior, caso a pessoa desenvolvendo a aplicação cometesse um erro no cálculo da média e replicasse outras 10 vezes? Imagine isto para um caso mais crítico, como uma aplicação bancária por exemplo? Realmente, é nisto que as funções demonstram seu poder.

Há funções que são definidas naturalmente como parte das bibliotecas da linguagem C#. Algumas também, podem ser facilmente construídas a partir de outras funções.

Há ainda o conceito de Delegates, que foge um pouco ao escopo deste artigo, mas recomendo a pesquisa a todos os interessados. Na prática, Delegates são funções que podem ser passadas como argumentos ou atribuídas a variáveis.

Enfim, espero que este artigo possa ter ilustrado brevemente sobre funções em C#. Obrigado pela leitura.

public void Agradecimento()
{
  Console.WriteLine("Obrigado pela leitura");
}

Referências:

Documentação da Microsoft sobre Métodos: Methods - C# Programming Guide - C# | Microsoft Learn

Documentação da Microsoft sobre Delegates: Delegados – Guia de Programação em C# | Microsoft Learn

Compartilhe
Comentários (0)