Esaminare una soluzione per l'interpolazione di stringhe

Completato

Il codice seguente costituisce una possibile soluzione alla sfida presentata nell'unità precedente.

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);

Questo codice rappresenta semplicemente "una possibile soluzione", perché molto dipende dal modo in cui si è deciso di implementare la logica. Se sono state usate le tecniche descritte in questo modulo per formattare le stringhe, le stringhe di riempimento e così via, e l'output corrisponde all'output richiesto per la verifica, la verifica è stata superata.

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  

In questo caso

Dettagli della soluzione

È possibile continuare questa sezione per una spiegazione del modo in cui la soluzione specificata risolve questa sfida.

  1. Soffermarsi qualche istante a esaminare il codice della soluzione.

    È possibile iniziare suddividendo la soluzione e risolvere prima di tutto la richiesta di scrivere il messaggio di saluto e il paragrafo di apertura nel terminale. Il codice che segue risolve la visualizzazione del messaggio di saluto Dear Ms. Barros, usando l'interpolazione di stringhe. A questo punto si dovrebbe avere una certa familiarità con il modello Console.WriteLine($"Your text {yourVariable}");:

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

    L'output del codice è:

    Dear Ms. Barros,   
    

    Esaminare nuovamente la soluzione completa di esempio. La prima metà della soluzione usa l'interpolazione delle stringhe per visualizzare ogni parte del primo paragrafo.

    Nota

    La formattazione composita, ad esempio Console.WriteLine("Dear {0},", customerName), è un'altra possibile soluzione.

  2. La seconda parte della soluzione visualizza la tabella di confronto creando una stringa lunga passo-passo usando la concatenazione di stringhe, string.Format() con formattazione composita, identificatori di formato (percentuale e valuta) e PadRight().

    Il codice seguente crea la prima riga della tabella con aggiunte di Console.WriteLine() dopo ogni passaggio della creazione della stringa 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);
    

    L'output di esempio seguente mostra come viene creata la prima riga della tabella di confronto in tre passaggi.

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

Se non si è riusciti a risolvere questa sfida, è consigliabile rivedere le unità precedenti prima di procedere.