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
String comparison and equality
📖 Scenario: Imagine you are creating a simple program that checks if a user's input matches a secret password. This is a common task in many applications like login screens or secret codes.
🎯 Goal: You will build a program that stores a secret password, takes a user input as a string, compares the input with the secret password using string equality, and then prints whether the input matches or not.
📋 What You'll Learn
Create a string variable called secretPassword with the exact value "OpenSesame".
Create a string variable called userInput with the exact value "opensesame".
Use a boolean variable called isMatch to store the result of comparing userInput and secretPassword using string.Equals with case sensitivity.
Print "Passwords match!" if isMatch is true, otherwise print "Passwords do not match.".
💡 Why This Matters
🌍 Real World
Checking if a user input matches a stored password or code is a common task in login systems, games, and secure applications.
💼 Career
Understanding string comparison is essential for software developers working on authentication, data validation, and user input handling.
Progress0 / 4 steps
1
Create the secret password and user input strings
Create a string variable called secretPassword and set it to "OpenSesame". Then create a string variable called userInput and set it to "opensesame".
C Sharp (C#)
Hint
Use string type and assign the exact text values with double quotes.
2
Add a boolean variable to compare the strings
Create a boolean variable called isMatch and set it to the result of string.Equals(userInput, secretPassword) to compare the two strings with case sensitivity.
C Sharp (C#)
Hint
Use string.Equals method to compare strings exactly.
3
Use an if statement to print the comparison result
Write an if statement that checks if isMatch is true. If yes, print "Passwords match!". Otherwise, print "Passwords do not match.".
C Sharp (C#)
Hint
Use if and else blocks with System.Console.WriteLine to print messages.
4
Run the program to see the output
Run the program and observe the output printed on the screen.
C Sharp (C#)
Hint
The output should say Passwords do not match. because the cases are different.
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