Delineare 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. Finché in questo modulo sono state usate le tecniche descritte in questo modulo per formattare stringhe, stringhe di riquadri e così via, e l'output corrisponde all'output della sfida, quindi si è fatto molto bene.

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  

Se ci sei riuscito, congratulazioni!

Dettagli della soluzione

È possibile continuare questa sezione per una spiegazione su come la soluzione specificata risolve questa sfida.

  1. Esaminare il codice della soluzione.

    È possibile iniziare a suddividere la soluzione e risolvere prima di tutto per scrivere il messaggio di saluto e aprire il paragrafo al terminale. Il codice che segue risolve la visualizzazione del messaggio di saluto Dear Ms. Barros, usando l'interpolazione di stringhe. A questo ora si avrà 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 di nuovo la soluzione completa di esempio. La prima metà della soluzione usa l'interpolazione di stringhe per visualizzare ogni parte del primo paragrafo.

    Annotazioni

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

  2. Nella seconda parte della soluzione viene visualizzata la tabella di confronto creando un passaggio di stringa lungo per passaggio usando la concatenazione di stringhe, string.Format() con formattazione composita, identificatori di formato (percentuale e valuta) e PadRight().

    Il codice seguente compila la prima riga della tabella con aggiunte di Console.WriteLine() dopo ogni passaggio della compilazione 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 compilata 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 si verificano problemi durante il completamento di questa sfida, è consigliabile esaminare le unità precedenti prima di continuare.