Consider the following code:
public static void Main()
{
string str1 = "abc";
string str2 = "abc";
if (str1 == str2)
{
Console.WriteLine("True");
}
else
{
Console.WriteLine("False");
}
Console.ReadLine();
}
The output is "True". string
is a reference type in .Net & I am comparing two different objects, but still the output is "True".
- Is is because it internally calls
ToString()
method on both objects & before comparing them? - Or is it because a
string
is an immutable type? Two completely distinctstring
objects having the same value would point to same memory location on the heap?
How does string
comparison happens?
How does memory allocation works on the heap? Will two different string
objects with the same value point to same memory location, or to a different one?