Exercício - Execute a adição com conversão de dados implícita
Muitas vezes, você vai querer executar operações matemáticas em dados numéricos. Você começará com a adição nesta unidade e expandirá para outras operações na próxima unidade, porque há uma lição importante a aprender sobre como o compilador C# analisa e interpreta seu código.
adicionar dois valores numéricos
Para adicionar dois números, você usará o operador de adição, que é o símbolo +
de adição . Sim, o mesmo símbolo +
que utiliza na concatenação de cadeia também é utilizado na adição. A reutilização de um símbolo para múltiplas finalidades é por vezes referida como a ação de "sobrecarregar o operador" e ocorre frequentemente em C#.
Neste caso, o compilador de C# compreende o que está a tentar fazer. O compilador analisa o seu código e vê que +
(o operador) está entre dois valores numéricos (os operandos). De acordo com os tipos de dados das variáveis (ambos são int
), o mesmo deduz que pretende somar esses dois valores.
Insira o seguinte código no Editor .NET:
int firstNumber = 12; int secondNumber = 7; Console.WriteLine(firstNumber + secondNumber);
Execute o código e você verá o seguinte resultado no console de saída:
19
misturar tipos de dados para forçar as conversões implícitas de tipo
O que acontece se você tentar usar o +
símbolo com ambos e int
string
valores?
Modifique o código que você escreveu para corresponder ao seguinte código:
string firstName = "Bob"; int widgetsSold = 7; Console.WriteLine(firstName + " sold " + widgetsSold + " widgets.");
Execute o código e você verá o seguinte resultado no console de saída:
Bob sold 7 widgets.
Nesse caso, o compilador C# entende que você deseja usar o +
símbolo para concatenar os dois operandos. Faz esta dedução porque o símbolo +
está entre operandos dos tipos de dados string
e int
. Assim, tenta converter, de forma implícita e temporária, a variável int
widgetsSold
numa string
para a poder concatenar com o resto da cadeia. O compilador de C# tenta ajudá-lo quando puder, mas o ideal é que transmita as suas intenções de forma explícita.
tentar realizar uma adição de números e uma concatenação de cadeias mais complexas
Modifique o código que você escreveu para corresponder ao seguinte código:
string firstName = "Bob"; int widgetsSold = 7; Console.WriteLine(firstName + " sold " + widgetsSold + 7 + " widgets.");
Execute o código e você verá o seguinte resultado no console de saída:
Bob sold 77 widgets.
Em vez de adicionar a variável int
widgetsSold
ao literal int
7
, o compilador trata tudo como se fosse uma cadeia e concatena tudo junto.
Adicione parênteses para esclarecer sua intenção ao compilador
Modifique o código que você escreveu para corresponder ao seguinte código:
string firstName = "Bob"; int widgetsSold = 7; Console.WriteLine(firstName + " sold " + (widgetsSold + 7) + " widgets.");
Execute o código e você verá o seguinte resultado no console de saída:
Bob sold 14 widgets.
O símbolo de parênteses ()
torna-se outro operador sobrecarregado. Neste caso, os parênteses de abertura e fecho formam o operador da ordem das operações tal como numa fórmula matemática. Você indica que deseja que os parênteses mais internos sejam resolvidos primeiro, resultando na adição de int
valores widgetsSold
e do valor 7
. Após a resolução desta adição, ocorrerá a conversão implícita do resultado numa cadeia para que esta possa ser concatenada com a restante mensagem.
Nota
Talvez deva evitar realizar um cálculo e uma concatenação numa única linha de código. O objetivo é ajudá-lo a compreender como pode ver os operadores e os operandos da forma que o compilador os vê.
Recapitulação
Aqui está o que você aprendeu até agora sobre operações matemáticas em C#:
- Pode realizar operações de adição em números semelhantes às operações de adição matemáticas.
- Tanto a concatenação de cadeia como a adição utilizam o símbolo
+
de adição. A isto chama-se sobrecarregar um operador e o compilador infere a utilização adequada com base nos tipos de dados nos quais opera. - Quando puder, o compilador de C# converterá implicitamente um
int
numastring
se for óbvio que o programador está a tentar concatenar a representação da cadeia de um número para fins de apresentação. - Use parênteses para definir uma ordem de operações para dizer explicitamente ao compilador que você deseja executar determinadas operações antes de outras operações.