Resumo : neste tutorial, você aprenderá como tornar seu código reutilizável usando funções C#.
Introdução às funções C#
Às vezes, você deseja executar a mesma tarefa várias vezes em um programa. Para fazer isso, você pode copiar e colar o código em vários lugares. No entanto, isso torna o programa muito difícil de manter.
Na programação, temos o princípio Don’t Repeat Yourself (DRY) . Isso significa que se você escrever as mesmas declarações repetidamente, poderá transformá-las em uma função.
Por definição, uma função é um bloco de código nomeado reutilizável que executa uma tarefa.
Por exemplo, o seguinte define a SayHi()
função que envia a "Hi"
mensagem para o console:
void SayHi()
{
Console.WriteLine("Hi");
}
Linguagem de código: C# ( cs )
Nesta função:
void
palavra-chave indica que aSayHi
função não retorna um valor.- O
SayHi
identificador é o nome da função. E você deve nomear a função da forma mais descritiva possível. Por convenção, o nome da função deve começar com um verbo (fazer algo específico). - Uma função pode ter zero ou mais parâmetros especificados entre parênteses após o nome da função. Neste exemplo, a
SayHi
função não possui parâmetro. Abordaremos os parâmetros em breve. - O bloco que segue os parênteses é o corpo da função. Um corpo de função contém uma ou mais instruções.
Para usar a SayHi()
função, você a chama assim:
SayHi();
Linguagem de código: C# ( cs )
Saída:
Hi
Linguagem de código: C# ( cs )
Ao encontrar uma chamada de função, o compilador executará a instrução dentro dessa função. Neste exemplo, ele executa a instrução que gera a "Hi"
mensagem.
E você pode chamar a SayHi()
função quantas vezes quiser assim:
void SayHi()
{
Console.WriteLine("Hi");
}
SayHi();
SayHi();
SayHi();
Linguagem de código: C# ( cs )
Saída:
Hi
Hi
Hi
Linguagem de código: C# ( cs )
Passando informações para funções
Para dizer oi para alguém, você pode modificar a SayHi()
função adicionando o name
parâmetro como este:
void SayHi(string name)
{
Console.WriteLine($"Hi {name}");
}
Linguagem de código: C# ( cs )
A name
é a entrada da SayHi()
função. Tecnicamente falando, o nome é um parâmetro da SayHi()
função.
Definir um parâmetro é como declarar uma variável . E você pode acessar o parâmetro como uma variável dentro da função.
Ao chamar a SayHi()
função, você precisa especificar um valor para o name
parâmetro da seguinte forma:
SayHi("John");
Linguagem de código: C# ( cs )
Saída:
Hi John
Linguagem de código: C# ( cs )
Junte tudo.
void SayHi(string name)
{
Console.WriteLine($"Hi {name}");
}
SayHi("John");
Linguagem de código: C# ( cs )
Parâmetros vs. argumentos
Um parâmetro de função é um identificador que você especifica na definição da função, enquanto um argumento de função é um valor que você passa para a função ao chamá-la.
No exemplo anterior, the name
é um parâmetro da SayHi()
função. Ao chamar a SayHi()
função, você passa a string literal "John"
para ela. Este valor de string é chamado de argumento.
Às vezes, você verá que os termos parâmetro e argumento são usados de forma intercambiável. Mas é importante entender a diferença entre eles.
Retornando um valor
A SayHi()
função não retorna nenhum valor. Portanto, você usa a void
palavra-chave. No entanto, se uma função retornar um valor, você precisará especificar o tipo do valor de retorno.
Por exemplo, a nova SayHi()
função a seguir retorna uma string:
string SayHi(string name)
{
return $"Hi {name}";
}
Linguagem de código: C# ( cs )
Nesta nova SayHi()
função, usamos a string
palavra-chave como tipo de retorno da função em vez de void
. Além disso, usamos a return
instrução para retornar uma string.
O código a seguir chama a SayHi()
função, atribui o valor de retorno à greeting
variável e o imprime:
string SayHi(string name)
{
return $"Hi {name}";
}
string greeting = SayHi("John");
Console.WriteLine(greeting);
Linguagem de código: C# ( cs )
Saída:
Hi John
Linguagem de código: C# ( cs )
A razão pela qual retornamos uma string da SayHi()
função em vez de enviá-la diretamente para o console é que queremos reutilizar a SayHi()
função em outros aplicativos, como aplicativos da web, não apenas em aplicativos de console.
Documentando funções C# com comentários XML
O exemplo a seguir define a CalculateBMI()
função que calcula o índice de massa corporal com base no peso em quilogramas e na altura em metros:
double CalculateBMI(double weight, double height)
{
return weight / (height * height);
}
Linguagem de código: C# ( cs )
Ao chamar a CalculateBMI()
função, o Visual Studio (ou qualquer editor de código) mostra o cabeçalho da função:
No entanto, se quiser mostrar mais informações sobre a função, você pode adicionar comentários à função. assim:
/// <summary>
/// Calculate the body mass index (BMI) based on weight in kg and height in meter
/// </summary>
/// <param name="weight">
/// The weight in kilogram
/// </param>
/// <param name="height">
/// The height in meter
/// </param>
/// <returns>
/// The body mass index
/// </returns>
double CalculateBMI(double weight, double height)
{
return weight / (height * height);
}
Linguagem de código: C# ( cs )
Para criar uma seção de comentários para uma função, você insere três barras ( ///
) logo antes do cabeçalho da função.
O comentário da função CalculaBMI possui três tags principais: summary
, param
e returns
.
- A
summary
tag contém a descrição da função - A
param
tag descreve os parâmetros - A
returns
tag contém as informações do valor de retorno
Exemplo de função C#
O programa a seguir calcula o IMC e exibe o status de peso correspondente:/
/// <summary>
/// Calculate the body mass index (BMI) based on weight in kg and height in meter
/// </summary>
/// <param name="weight">
/// The weight in kilogram
/// </param>
/// <param name="height">
/// The height in meter
/// </param>
/// <returns>
/// The body mass index
/// </returns>
double CalculateBMI(double weight, double height)
{
return weight / (height * height);
}
/// <summary>
/// Get the weight status based on the Body Mass Index (BMI)
/// </summary>
///<params name="bmi">
///The body mass index
///</params>
/// A text string that represents the weight status
///<returns>
///</returns>
string GetWeightStatus(double bmi)
{
string weightStatus = "";
switch (bmi)
{
case < 18.5:
weightStatus = "Underweight";
break;
case >= 18.5 and <= 24.9:
weightStatus = "Healthy Weight";
break;
case >= 25 and <= 29.9:
weightStatus = "Overweight";
break;
case > 30:
weightStatus = "Obesity";
break;
}
return weightStatus;
}
// main program
Console.WriteLine("Body Mass Index (BMI) Calculation");
Console.WriteLine("Enter a weight (kg):");
var weight = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Enter a height (m):");
var height = Convert.ToDouble(Console.ReadLine());
double bmi = CalculateBMI(weight, height);
string weightStatus = GetWeightStatus(bmi);
Console.WriteLine($"BMI: {bmi:0.#}");
Console.WriteLine($"Weight status:{ weightStatus}");
Linguagem de código: C# ( cs )
Como funciona.
Primeiro, defina a CalculateBMI()
função que retorna o IMC com base no peso e na altura:
/// <summary>
/// Calculate the body mass index (BMI) based on weight in kg and height in meter
/// </summary>
/// <param name="weight">
/// The weight in kilogram
/// </param>
/// <param name="height">
/// The height in meter
/// </param>
/// <returns>
/// The body mass index
/// </returns>
double CalculateBMI(double weight, double height)
{
return weight / (height * height);
}
Linguagem de código: C# ( cs )
A seguir, defina a GetWeightStatus()
função que retorna o status do peso com base no IMC:
/// <summary>
/// Get the weight status based on the Body Mass Index (BMI)
/// </summary>
///<params name="bmi">
///The body mass index
///</params>
/// A text string that represents the weight status
///<returns>
///</returns>
string GetWeightStatus(double bmi)
{
string weightStatus = "";
switch (bmi)
{
case < 18.5:
weightStatus = "Underweight";
break;
case >= 18.5 and <= 24.9:
weightStatus = "Healthy Weight";
break;
case >= 25 and <= 29.9:
weightStatus = "Overweight";
break;
case > 30:
weightStatus = "Obesity";
break;
}
return weightStatus;
}
Linguagem de código: C# ( cs )
Em seguida, solicite aos usuários que insiram a altura e o peso:
Console.WriteLine("Body Mass Index (BMI) Calculation");
Console.WriteLine("Enter a weight (kg):");
var weight = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Enter a height (m):");
var height = Convert.ToDouble(Console.ReadLine());
Linguagem de código: C# ( cs )
Depois disso, chame a função CalculateBMI()
and GetWeightStatus()
para calcular o IMC e o status do peso:
double bmi = CalculateBMI(weight, height);
string weightStatus = GetWeightStatus(bmi);
Linguagem de código: C# ( cs )
Por fim, mostre a saída:
Console.WriteLine($"BMI: {bmi:0.#}");
Console.WriteLine($"Weight status:{ weightStatus}");
Linguagem de código: C# ( cs )
Resumo
- Uma função é um bloco de código nomeado reutilizável que executa uma tarefa.
- Uma função pode ter zero ou mais parâmetros e um valor de retorno opcional.
- Use a
return
instrução para retornar um valor de uma função. - Use comentários XML para documentar uma função.