Exercício - Execute a adição com conversão de dados implícita

Concluído

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.

  1. Insira o seguinte código no Editor .NET:

    int firstNumber = 12;
    int secondNumber = 7;
    Console.WriteLine(firstNumber + secondNumber);
    
  2. 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?

  1. 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.");
    
  2. 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 intwidgetsSold 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

  1. 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.");
    
  2. 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

  1. 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.");
    
  2. 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 numa string 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.