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.

Hay disponible un editor de código de C# para usarlo directamente en el explorador: Editor de código de C#. Este editor proporciona un entorno ligero para escribir, ejecutar y probar código de C# sin necesidad de instalar ningún software en el equipo local.

  1. Abra el Editor de código de C# en una nueva ventana o pestaña del explorador.

    Puede colocar las ventanas del explorador en paralelo para que pueda hacer referencia a estas instrucciones mientras trabaja en el Editor de código de C#.

  2. Escriba el código siguiente en el Editor de código de C#:

    int firstNumber = 12;
    int secondNumber = 7;
    Console.WriteLine(firstNumber + secondNumber);
    
  3. 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. Elimine todo el código que haya escrito anteriormente.

  2. Escriba el código siguiente en el Editor de código de C#:

    string firstName = "Bob";
    int widgetsSold = 7;
    Console.WriteLine(firstName + " sold " + widgetsSold + " widgets.");
    
  3. 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.

Intenta un caso más avanzado de adición de números 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. Indicas que quieres que los paréntesis más internos se resuelvan primero, lo que da como resultado la suma de los valores int y widgetsSold, 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.
  • Tanto la concatenación de cadenas como la suma usan el símbolo de suma +. 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.