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
Recall & Review
beginner
What does the == operator do when used with strings in C#?
In C#, the == operator compares the contents of two strings to check if they are equal, not just their references. It returns true if the strings have the same characters in the same order.
Click to reveal answer
intermediate
What is the difference between String.Equals() and == for strings?
String.Equals() is a method that compares two strings for equality and can be customized with options like case sensitivity. The == operator also compares string contents but is simpler to use. Both check the actual text, not references.
Click to reveal answer
intermediate
How can you compare two strings ignoring case in C#?
Use String.Equals(str1, str2, StringComparison.OrdinalIgnoreCase) to compare two strings without considering uppercase or lowercase differences.
Click to reveal answer
intermediate
What does String.Compare(str1, str2) return?
It returns an integer: 0 if strings are equal, less than 0 if str1 is less than str2, and greater than 0 if str1 is greater than str2 based on lexicographical order.
Click to reveal answer
advanced
Why should you avoid using ReferenceEquals() to compare strings for equality?
ReferenceEquals() checks if two string variables point to the exact same object in memory, not if their text is the same. This can give false results when strings have the same content but are different objects.
Click to reveal answer
Which operator compares the content of two strings in C#?
A==
B=
C===
D!=
✗ Incorrect
The == operator compares the content of two strings for equality in C#.
What does String.Equals(str1, str2, StringComparison.OrdinalIgnoreCase) do?
ACompares strings including case
BChecks if strings are the same object
CCompares strings ignoring case
DConverts strings to uppercase
✗ Incorrect
It compares two strings ignoring case differences.
What value does String.Compare(str1, str2) return if str1 is lexicographically less than str2?
ALess than 0
B0
CGreater than 0
DThrows an exception
✗ Incorrect
It returns a negative number if str1 is less than str2.
Which method should you use to check if two strings have the same text but ignore case?
AReferenceEquals()
BString.Equals() with StringComparison.OrdinalIgnoreCase
C== operator
DString.Compare() without parameters
✗ Incorrect
Using String.Equals with StringComparison.OrdinalIgnoreCase ignores case when comparing.
Why is ReferenceEquals() not reliable for string content comparison?
AIt compares string lengths only
BIt always returns true
CIt ignores case differences
DIt compares memory addresses, not content
✗ Incorrect
ReferenceEquals checks if two variables point to the same object, not if their text is equal.
Explain how to compare two strings for equality in C# considering case sensitivity.
Think about methods and operators that check string content.
You got /3 concepts.
Describe the difference between comparing strings by reference and by content in C#.
Consider what happens when two strings have same text but different memory locations.
You got /3 concepts.
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
Step 1: Understand string equality operator
In C#, == compares the values of two strings correctly.
Step 2: Analyze other options
str1 = str2 is assignment, str1.Equals is incomplete, and CompareTo returns an int, not a bool.
Final Answer:
if (str1 == str2) -> Option A
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)
string.Equals with StringComparison.OrdinalIgnoreCase compares strings ignoring case.
Step 2: Check other options
a == b.ToLower() compares different types, a.Equals(b) is case-sensitive, and string.Compare returns int, not bool.
Final Answer:
string.Equals(a, b, StringComparison.OrdinalIgnoreCase) -> Option C
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
Step 1: Understand string.Compare with OrdinalIgnoreCase
It compares strings ignoring case and returns negative if first is before second alphabetically.
Step 2: Compare "apple" and "Banana" ignoring case
"apple" comes before "banana" alphabetically, so result is negative (-1).
Final Answer:
-1 -> Option A
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
Step 1: Analyze '==' operator behavior
The '==' operator compares strings case-sensitively, so "Hello" != "hello".
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.
Final Answer:
Using '==' compares case-sensitively, so it fails here -> Option D
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
Step 1: Understand sorting comparer requirements
A comparer must return negative, zero, or positive int based on alphabetical order.
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.
Final Answer:
return string.Compare(x, y, StringComparison.OrdinalIgnoreCase); -> Option B
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