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

String comparison and equality in C Sharp (C#) - Interactive Code Practice

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
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to check if two strings are equal using the == operator.

C Sharp (C#)
string a = "hello";
string b = "hello";
bool areEqual = a [1] b;
Drag options to blanks, or click blank then click option'
A==
B!=
C=
DEquals
Attempts:
3 left
💡 Hint
Common Mistakes
Using = instead of == causes assignment, not comparison.
Using != checks for inequality, not equality.
2fill in blank
medium

Complete the code to compare two strings ignoring case using String.Equals method.

C Sharp (C#)
string a = "Hello";
string b = "hello";
bool areEqual = String.Equals(a, b, [1]);
Drag options to blanks, or click blank then click option'
AStringComparison.CurrentCultureIgnoreCase
BStringComparison.Ordinal
CStringComparison.CurrentCulture
DStringComparison.OrdinalIgnoreCase
Attempts:
3 left
💡 Hint
Common Mistakes
Using Ordinal instead of OrdinalIgnoreCase causes case-sensitive comparison.
Using CurrentCulture may depend on system culture settings.
3fill in blank
hard

Fix the error in the code to correctly compare two strings for equality using the Equals method.

C Sharp (C#)
string a = "test";
string b = "test";
bool areEqual = a.Equals([1]);
Drag options to blanks, or click blank then click option'
Ab
B"b"
Ca
DEquals
Attempts:
3 left
💡 Hint
Common Mistakes
Passing a string literal "b" instead of variable b.
Calling Equals without any argument causes error.
4fill in blank
hard

Fill both blanks to create a dictionary that maps strings to their lengths, but only include strings with length greater than 3.

C Sharp (C#)
var words = new List<string> { "apple", "bat", "carrot", "dog" };
var lengths = words.ToDictionary(word => word, word => word.[1]);
var filtered = lengths.Where(kv => kv.Value [2] 3).ToDictionary(kv => kv.Key, kv => kv.Value);
Drag options to blanks, or click blank then click option'
ALength
B<
C>
DCount
Attempts:
3 left
💡 Hint
Common Mistakes
Using Count instead of Length for string length.
Using < 3 instead of > 3 for filtering.
5fill in blank
hard

Fill all three blanks to create a dictionary with uppercase keys and values only for strings that start with 'a'.

C Sharp (C#)
var words = new List<string> { "apple", "banana", "apricot", "cherry" };
var result = words.Where(word => word.[1]("a")).ToDictionary(word => word.[2](), word => word.[3]());
Drag options to blanks, or click blank then click option'
AStartsWith
BToUpper
DContains
Attempts:
3 left
💡 Hint
Common Mistakes
Using Contains instead of StartsWith for filtering.
Not converting keys or values to uppercase.

Practice

(1/5)
1. Which of the following is the correct way to check if two strings str1 and str2 have the same value in C#?
easy
A. if (str1 == str2)
B. if (str1 = str2)
C. if (str1.Equals)
D. if (str1.CompareTo(str2))

Solution

  1. Step 1: Understand string equality operator

    In C#, == compares the values of two strings correctly.
  2. Step 2: Analyze other options

    str1 = str2 is assignment, str1.Equals is incomplete, and CompareTo returns an int, not a bool.
  3. Final Answer:

    if (str1 == str2) -> Option A
  4. Quick Check:

    Use == for string equality [OK]
Hint: Use == to compare string values directly [OK]
Common Mistakes:
  • Using single = instead of ==
  • Calling Equals without parentheses or arguments
  • Using CompareTo expecting a boolean
2. Which of the following is the correct syntax to compare two strings a and b ignoring case in C#?
easy
A. a.Equals(b)
B. a == b.ToLower()
C. string.Equals(a, b, StringComparison.OrdinalIgnoreCase)
D. string.Compare(a, b)

Solution

  1. Step 1: Identify case-insensitive comparison method

    string.Equals with StringComparison.OrdinalIgnoreCase compares strings ignoring case.
  2. Step 2: Check other options

    a == b.ToLower() compares different types, a.Equals(b) is case-sensitive, and string.Compare returns int, not bool.
  3. Final Answer:

    string.Equals(a, b, StringComparison.OrdinalIgnoreCase) -> Option C
  4. Quick Check:

    Use string.Equals with OrdinalIgnoreCase for case-insensitive [OK]
Hint: Use string.Equals with OrdinalIgnoreCase to ignore case [OK]
Common Mistakes:
  • Using == which is case-sensitive
  • Calling Equals without StringComparison argument
  • Using string.Compare expecting boolean
3. What is the output of the following C# code?
string s1 = "apple";
string s2 = "Banana";
int result = string.Compare(s1, s2, StringComparison.OrdinalIgnoreCase);
Console.WriteLine(result);
medium
A. -1
B. 0
C. 1
D. Compilation error

Solution

  1. Step 1: Understand string.Compare with OrdinalIgnoreCase

    It compares strings ignoring case and returns negative if first is before second alphabetically.
  2. Step 2: Compare "apple" and "Banana" ignoring case

    "apple" comes before "banana" alphabetically, so result is negative (-1).
  3. Final Answer:

    -1 -> Option A
  4. Quick Check:

    "apple" < "Banana" ignoring case = -1 [OK]
Hint: Compare returns negative if first string is alphabetically before second [OK]
Common Mistakes:
  • Assuming Compare returns boolean
  • Ignoring case sensitivity in comparison
  • Expecting 0 when strings differ
4. The following code is intended to check if two strings are equal ignoring case, but it does not work as expected. What is the error?
string a = "Hello";
string b = "hello";
if (a == b.ToLower())
{
Console.WriteLine("Equal");
} else {
Console.WriteLine("Not Equal");
}
medium
A. The code should use 'string.Compare(a, b)' without ToLower()
B. b.ToLower() returns null, causing error
C. The code should use 'a.Equals(b)' instead
D. Using '==' compares case-sensitively, so it fails here

Solution

  1. Step 1: Analyze '==' operator behavior

    The '==' operator compares strings case-sensitively, so "Hello" != "hello".
  2. Step 2: Understand why ToLower() doesn't fix it

    Comparing 'a' to 'b.ToLower()' still compares case-sensitively; 'a' is "Hello" (mixed case), so comparison fails.
  3. Final Answer:

    Using '==' compares case-sensitively, so it fails here -> Option D
  4. Quick Check:

    '==' is case-sensitive, so this check fails [OK]
Hint: Use string.Equals with ignore case instead of == [OK]
Common Mistakes:
  • Assuming ToLower() changes original string
  • Using == for case-insensitive comparison
  • Not calling Equals with StringComparison argument
5. You want to sort a list of strings alphabetically ignoring case in C#. Which approach correctly compares two strings x and y inside a custom comparer?
hard
A. return x == y ? 0 : 1;
B. return string.Compare(x, y, StringComparison.OrdinalIgnoreCase);
C. return x.Equals(y) ? 0 : -1;
D. return x.CompareTo(y);

Solution

  1. Step 1: Understand sorting comparer requirements

    A comparer must return negative, zero, or positive int based on alphabetical order.
  2. Step 2: Check each option's return value and case sensitivity

    return string.Compare(x, y, StringComparison.OrdinalIgnoreCase); uses string.Compare with OrdinalIgnoreCase, correctly returning int for sorting ignoring case. return x == y ? 0 : 1; returns only 0 or 1, not suitable. return x.Equals(y) ? 0 : -1; returns 0 or -1 but ignores order and case. return x.CompareTo(y); uses CompareTo which is case-sensitive.
  3. Final Answer:

    return string.Compare(x, y, StringComparison.OrdinalIgnoreCase); -> Option B
  4. Quick Check:

    Use string.Compare with OrdinalIgnoreCase for case-insensitive sorting [OK]
Hint: Use string.Compare with OrdinalIgnoreCase in sorting comparer [OK]
Common Mistakes:
  • Returning only 0 or 1 instead of negative/zero/positive
  • Using case-sensitive CompareTo for ignoring case
  • Using Equals which returns bool, not int