Ejercicio: Sumas con conversión implícita de datos

Completado

A menudo, querrá realizar operaciones matemáticas con datos numéricos. En esta unidad se comenzará por la suma, y se verán otras operaciones en la unidad siguiente, ya que hay una lección importante que aprender sobre la forma en que el compilador de C# analiza e interpreta el código.

Adición de dos valores numéricos

Para sumar dos números, se usa el operador de suma, que es el símbolo +. Sí, el mismo símbolo más + que se utiliza para la concatenación de cadenas también se usa para la suma. La reutilización de un símbolo para varios propósitos se denomina a veces "sobrecarga del operador" y sucede con frecuencia en C#.

En esta instancia, el compilador de C# entiende lo que se intenta hacer. El compilador analiza el código y ve que + (el operador) está rodeado por dos valores numéricos (los operandos). Dados los tipos de datos de las variables (ambos son int), el compilador deduce que la intención es agregar esos dos valores.

  1. Escriba el código siguiente en el Editor de .NET.

    int firstNumber = 12;
    int secondNumber = 7;
    Console.WriteLine(firstNumber + secondNumber);
    
  2. Ejecute el código y verá el siguiente resultado en la salida de la consola:

    19
    

Combinación de tipos de datos para forzar las conversiones implícitas de tipos

¿Qué ocurre si intenta usar el símbolo + con los valores string y int?

  1. Modifique el código que ha escrito para que coincida con el siguiente:

    string firstName = "Bob";
    int widgetsSold = 7;
    Console.WriteLine(firstName + " sold " + widgetsSold + " widgets.");
    
  2. Ejecute el código y verá el siguiente resultado en la salida de la consola:

    Bob sold 7 widgets.
    

En este caso, el compilador de C# entiende que se quiere usar el símbolo + para concatenar los dos operandos. Lo deduce porque el símbolo + está rodeado por operandos de los tipos de datos string y int. Por lo tanto, intenta convertir implícitamente la variable intwidgetsSold en string temporalmente para poder concatenarla al resto de la cadena. El compilador de C# intenta ayudarle cuando puede, pero lo ideal es que sea explícito sobre sus intenciones.

Prueba realizada con un caso más avanzado de suma numérica y concatenación de cadenas

  1. Modifique el código que ha escrito para que coincida con el siguiente:

    string firstName = "Bob";
    int widgetsSold = 7;
    Console.WriteLine(firstName + " sold " + widgetsSold + 7 + " widgets.");
    
  2. Ejecute el código y verá el siguiente resultado en la salida de la consola:

    Bob sold 77 widgets.
    

En lugar de agregar la variable intwidgetsSold al literal int7, el compilador trata todo como una cadena y lo concatena todo junto.

Adición de paréntesis para aclarar la intención al compilador

  1. Modifique el código que ha escrito para que coincida con el siguiente:

    string firstName = "Bob";
    int widgetsSold = 7;
    Console.WriteLine(firstName + " sold " + (widgetsSold + 7) + " widgets.");
    
  2. Ejecute el código y verá el siguiente resultado en la salida de la consola:

    Bob sold 14 widgets.
    

El símbolo de paréntesis () se convierte en otro operador sobrecargado. En este caso, los paréntesis de apertura y cierre forman el operador de orden de las operaciones, tal como se usaría en una fórmula matemática. Indicará que quiere que el paréntesis interno se resuelva primero, lo que da como resultado la suma de los valores intwidgetsSold y el valor 7. Una vez que se resuelve, se convertirá implícitamente el resultado en una cadena para que se pueda concatenar con el resto del mensaje.

Nota:

Probablemente debería evitar la realización de cálculos y concatenaciones en una sola línea de código. Lo importante aquí es ayudarle a ver los operadores y los operandos de la misma forma en que lo hace el compilador.

Resumen

Esto es lo que ha aprendido hasta ahora sobre las operaciones matemáticas en C#:

  • Puede realizar operaciones matemáticas como la suma de números.
  • La concatenación de cadenas y la suma usan el símbolo más +. Esto se denomina sobrecarga de un operador. El compilador deduce el uso adecuado en función de los tipos de datos en los que opera.
  • Cuando sea posible, el compilador de C# convertirá implícitamente un int en un string si es obvio que el desarrollador intenta concatenar la representación de cadena de un número con fines de presentación.
  • Puede usar paréntesis para definir el orden de las operaciones y así indicar explícitamente al compilador que se quiere realizar ciertas operaciones antes que otras.