Bird
Raised Fist0
C Sharp (C#)programming~5 mins

String interpolation and formatting in C Sharp (C#)

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction

String interpolation and formatting help you create text that includes values from variables easily and clearly.

When you want to show a message that includes numbers or names stored in variables.
When you need to build a sentence that changes based on user input.
When you want to format numbers or dates nicely inside text.
When you want to combine text and values without using many plus signs (+).
Syntax
C Sharp (C#)
string result = $"Hello, {name}! You have {count} new messages.";

Use the $ symbol before the string to start interpolation.

Place variables or expressions inside curly braces { } where you want their values to appear.

Examples
Simple interpolation with variables inside a string.
C Sharp (C#)
string name = "Alice";
int age = 30;
string message = $"Name: {name}, Age: {age}";
Formats the price as currency using :C.
C Sharp (C#)
double price = 12.5;
string formatted = $"Price: {price:C}";
Formats the date to show full month name, day, and year.
C Sharp (C#)
DateTime today = DateTime.Now;
string date = $"Today is {today:MMMM dd, yyyy}";
You can use expressions inside the braces.
C Sharp (C#)
int x = 5, y = 10;
string sum = $"Sum of {x} and {y} is {x + y}";
Sample Program

This program shows how to use string interpolation to include variables and format numbers and dates in a friendly message.

C Sharp (C#)
using System;

class Program
{
    static void Main()
    {
        string user = "Bob";
        int messages = 3;
        double balance = 45.678;
        DateTime now = DateTime.Now;

        string output = $"Hello, {user}! You have {messages} new messages.\n" +
                        $"Your balance is {balance:C2}.\n" +
                        $"Today is {now:dddd, MMMM dd, yyyy}.";

        Console.WriteLine(output);
    }
}
OutputSuccess
Important Notes

String interpolation was introduced in C# 6.0 and is now the easiest way to build strings with variables.

You can add formatting inside the braces after a colon, like {value:C2} for currency with 2 decimals.

Remember to use \n for new lines inside strings.

Summary

Use $"...{variable}..." to insert variables directly into strings.

You can format numbers and dates inside the braces with a colon and format code.

String interpolation makes your code easier to read and write compared to older methods.

Practice

(1/5)
1. What does the following C# code do?
int age = 25;
string message = $"I am {age} years old.";
easy
A. Concatenates the string and integer without formatting.
B. Inserts the value of age into the string at the placeholder.
C. Causes a syntax error because of the dollar sign.
D. Creates a string with the text including curly braces literally.

Solution

  1. Step 1: Understand string interpolation syntax

    The dollar sign $ before the string allows inserting variables inside curly braces.
  2. Step 2: Identify variable insertion

    The variable age is inserted where {age} appears, replacing the placeholder with its value.
  3. Final Answer:

    Inserts the value of age into the string at the placeholder. -> Option B
  4. Quick Check:

    String interpolation = Insert variable value [OK]
Hint: Look for $ and {variable} to spot interpolation [OK]
Common Mistakes:
  • Thinking $ means string concatenation
  • Expecting curly braces to print literally
  • Confusing interpolation with format method
2. Which of the following is the correct syntax for formatting a double value to show two decimal places using string interpolation in C#?
easy
A. double price = 9.99; string s = $"Price: {price:0.00}";
B. double price = 9.99; string s = $"Price: {price,2}";
C. double price = 9.99; string s = $"Price: {price:.2f}";
D. double price = 9.99; string s = $"Price: {price.ToString("0.00")}";

Solution

  1. Step 1: Recognize C# format specifier syntax

    In C#, inside interpolation braces, :0.00 formats numbers to two decimals.
  2. Step 2: Check each option's correctness

    double price = 9.99; string s = $"Price: {price:0.00}"; uses correct format {price:0.00}. double price = 9.99; string s = $"Price: {price,2}"; uses comma which is for alignment, not decimals. double price = 9.99; string s = $"Price: {price:.2f}"; uses Python style .2f which is invalid in C#. double price = 9.99; string s = $"Price: {price.ToString("0.00")}"; calls ToString inside interpolation but with escaped quotes incorrectly.
  3. Final Answer:

    double price = 9.99; string s = $"Price: {price:0.00}"; -> Option A
  4. Quick Check:

    Format decimals with :0.00 inside {} [OK]
Hint: Use colon and format code inside braces for formatting [OK]
Common Mistakes:
  • Using Python or other language format codes
  • Confusing alignment comma with format colon
  • Trying to call methods inside interpolation incorrectly
3. What is the output of the following code?
int x = 5;
int y = 3;
string result = $"Sum: {x + y}, Product: {x * y}";
Console.WriteLine(result);
medium
A. Sum: 53, Product: 15
B. Sum: {x + y}, Product: {x * y}
C. Sum: 8, Product: 15
D. Sum: 8 Product: 15

Solution

  1. Step 1: Evaluate expressions inside interpolation

    The expressions {x + y} and {x * y} calculate 5 + 3 = 8 and 5 * 3 = 15 respectively.
  2. Step 2: Check output formatting

    The string inserts these values with a comma and space exactly as written, so output is "Sum: 8, Product: 15".
  3. Final Answer:

    Sum: 8, Product: 15 -> Option C
  4. Quick Check:

    Expressions inside {} are evaluated before output [OK]
Hint: Calculate expressions inside {} before output [OK]
Common Mistakes:
  • Thinking expressions print literally
  • Concatenating numbers as strings
  • Missing commas or spaces in output
4. Identify the error in this C# code snippet:
int count = 10;
string message = $"Count is {count,2.0}";
Console.WriteLine(message);
medium
A. Variable count is not declared.
B. Missing dollar sign for string interpolation.
C. No error; code runs fine.
D. Incorrect format specifier; cannot combine alignment and decimal format like that.

Solution

  1. Step 1: Understand alignment and format syntax

    In interpolation, {variable,alignment:format} is correct. Here, {count,2.0} mixes alignment and format incorrectly without colon.
  2. Step 2: Identify correct syntax

    It should be {count,2:0} or similar. The dot without colon causes syntax error.
  3. Final Answer:

    Incorrect format specifier; cannot combine alignment and decimal format like that. -> Option D
  4. Quick Check:

    Use comma for alignment, colon for format separately [OK]
Hint: Use comma for alignment, colon for format inside {} [OK]
Common Mistakes:
  • Mixing alignment and format without colon
  • Forgetting dollar sign for interpolation
  • Assuming no error when syntax is wrong
5. You want to display a date in the format "Year: 2024, Month: 06, Day: 15" using string interpolation. Which code snippet correctly formats the DateTime object date to achieve this?
hard
A. DateTime date = new DateTime(2024, 6, 15); string s = $"Year: {date:yyyy}, Month: {date:MM}, Day: {date:dd}";
B. DateTime date = new DateTime(2024, 6, 15); string s = $"Year: {date.Year}, Month: {date.Month}, Day: {date.Day}";
C. DateTime date = new DateTime(2024, 6, 15); string s = $"Year: {date:Year}, Month: {date:Month}, Day: {date:Day}";
D. DateTime date = new DateTime(2024, 6, 15); string s = $"Year: {date.ToString("yyyy")}, Month: {date.ToString("MM")}, Day: {date.ToString("dd")}";

Solution

  1. Step 1: Understand date format strings in interpolation

    Inside interpolation, {date:format} applies the format string to the DateTime object.
  2. Step 2: Compare options

    DateTime date = new DateTime(2024, 6, 15); string s = $"Year: {date:yyyy}, Month: {date:MM}, Day: {date:dd}"; uses correct format codes yyyy, MM, dd inside interpolation. DateTime date = new DateTime(2024, 6, 15); string s = $"Year: {date.Year}, Month: {date.Month}, Day: {date.Day}"; uses properties but month/day will not have leading zeros. DateTime date = new DateTime(2024, 6, 15); string s = $"Year: {date:Year}, Month: {date:Month}, Day: {date:Day}"; uses invalid format names. DateTime date = new DateTime(2024, 6, 15); string s = $"Year: {date.ToString("yyyy")}, Month: {date.ToString("MM")}, Day: {date.ToString("dd")}"; calls ToString with escaped quotes incorrectly.
  3. Final Answer:

    DateTime date = new DateTime(2024, 6, 15); string s = $"Year: {date:yyyy}, Month: {date:MM}, Day: {date:dd}"; -> Option A
  4. Quick Check:

    Use :format inside {} for DateTime formatting [OK]
Hint: Use :yyyy, :MM, :dd inside {} for date formatting [OK]
Common Mistakes:
  • Using property names as format strings
  • Forgetting leading zeros for month/day
  • Overusing ToString inside interpolation unnecessarily