Revisión de una solución para la interpolación de cadenas

Completado

El siguiente código es una posible solución al desafío de la unidad anterior.

string customerName = "Ms. Barros";

string currentProduct = "Magic Yield";
int currentShares = 2975000;
decimal currentReturn = 0.1275m;
decimal currentProfit = 55000000.0m;

string newProduct = "Glorious Future";
decimal newReturn = 0.13125m;
decimal newProfit = 63000000.0m;

Console.WriteLine($"Dear {customerName},");
Console.WriteLine($"As a customer of our {currentProduct} offering we are excited to tell you about a new financial product that would dramatically increase your return.\n");
Console.WriteLine($"Currently, you own {currentShares:N} shares at a return of {currentReturn:P}.\n");
Console.WriteLine($"Our new product, {newProduct} offers a return of {newReturn:P}.  Given your current volume, your potential profit would be {newProfit:C}.\n");

Console.WriteLine("Here's a quick comparison:\n");

string comparisonMessage = "";

comparisonMessage = currentProduct.PadRight(20);
comparisonMessage += String.Format("{0:P}", currentReturn).PadRight(10);
comparisonMessage += String.Format("{0:C}", currentProfit).PadRight(20);

comparisonMessage += "\n";
comparisonMessage += newProduct.PadRight(20);
comparisonMessage += String.Format("{0:P}", newReturn).PadRight(10);
comparisonMessage += String.Format("{0:C}", newProfit).PadRight(20);

Console.WriteLine(comparisonMessage);

Este código es simplemente "una posible solución", ya que mucho depende de cómo haya decidido implementar la lógica. Siempre que haya usado las técnicas que se tratan en este módulo para dar formato, rellenar cadenas, etc., y la salida coincide con la del desafío, ¡ha hecho un gran trabajo!

Dear Ms. Barros,
As a customer of our Magic Yield offering we are excited to tell you about a new financial product that would dramatically increase your return.

Currently, you own 2,975,000.00 shares at a return of 12.75%.

Our new product, Glorious Future offers a return of 13.13%.  Given your current volume, your potential profit would be $63,000,000.00.

Here's a quick comparison:

Magic Yield         12.75%   $55,000,000.00      
Glorious Future     13.13%   $63,000,000.00  

Si es así, enhorabuena.

Detalles de la solución

Puede continuar esta sección para obtener una explicación sobre cómo la solución dada resuelve este desafío.

  1. Dedique un minuto a revisar el código de la solución.

    Puede comenzar a desglosar la solución y empezar resolviendo primero cómo escribir el saludo y el párrafo de apertura en el terminal. El código siguiente resuelve la visualización del saludo Dear Ms. Barros, mediante la interpolación de cadenas. Ahora debería estar familiarizado con el patrón Console.WriteLine($"Your text {yourVariable}");:

    string customerName = "Ms. Barros";
    Console.WriteLine($"Dear {customerName},");
    

    La salida del código es:

    Dear Ms. Barros,   
    

    Vuelva a revisar la solución completa de ejemplo. La primera mitad de la solución usa la interpolación de cadenas para mostrar cada parte del primer párrafo.

    Nota:

    El formato compuesto como Console.WriteLine("Dear {0},", customerName) es otra posible solución.

  2. La segunda parte de la solución muestra la tabla de comparación mediante la creación de una cadena larga paso a paso mediante la concatenación de cadenas, string.Format() con formato compuesto, especificadores de formato (porcentaje y moneda) y PadRight().

    El código siguiente construye la primera línea de la tabla con la adición de Console.WriteLine() después de cada paso de construcción de la cadena comparisonMessage.

    string currentProduct = "Magic Yield";
    int currentShares = 2975000;
    decimal currentReturn = 0.1275m;
    decimal currentProfit = 55000000.0m;
    string comparisonMessage = "";
    
    comparisonMessage = currentProduct.PadRight(20);
    Console.WriteLine(comparisonMessage);
    
    comparisonMessage += String.Format("{0:P}", currentReturn).PadRight(10);
    Console.WriteLine(comparisonMessage);
    
    comparisonMessage += String.Format("{0:C}", currentProfit).PadRight(20);
    Console.WriteLine(comparisonMessage);
    

    En la salida de ejemplo siguiente se muestra cómo se compila la primera línea de la tabla de comparación en tres pasos.

    Magic Yield
    Magic Yield         12.75%
    Magic Yield         12.75%    $55,000,000.00
    

Si tiene problemas para completar este desafío, quizás deba revisar las unidades anteriores antes de continuar.