according to the theory after manupaliting string using String Builder keyword both memory address must be same, but i get wrong answer. could anyone please explain this.
class Program
{
static void Main(string[] args)
{
Console.WriteLine("using string keyword (immutable)");
string str1 = "Interview";
Console.WriteLine("str1 text is: "+ str1);
unsafe
{
fixed (char* pointer = str1)
{
Console.WriteLine("Memory address of str1 is: "+(int)pointer);
}
}
str1 += "Happy";
Console.WriteLine("str1 modified text is: "+str1);
unsafe
{
fixed (char* pointer = str1)
{
Console.WriteLine("str1 memeory address is: "+(int)pointer);
}
}
Console.WriteLine("\n");
Console.WriteLine("Using String Builder to (mutable string)");
StringBuilder str2 = new StringBuilder();
str2.Append ("Interview");
Console.WriteLine("str2 text is:" + str2);
unsafe
{
fixed (char* pointer = str2.ToString())
{
Console.WriteLine("str2 memory address is: "+(int)pointer);
}
}
str2.Append("Selection Process");
Console.WriteLine("str2 modified text is: "+str2);
unsafe
{
fixed (char* pointer = str2.ToString())
{
Console.WriteLine("str2 aftermodified memory address is:"+(int)pointer);
}
}
Console.ReadKey();
}
}
// result
using string keyword (immutable)
str1 text is: Interview
Memory address of str1 is: 52066096
str1 modified text is: InterviewHappy
str1 memeory address is: 52069440
Using String Builder to (mutable string)
str2 text is:Interview
str2 memory address is: 52070212
str2 modified text is: InterviewSelection Process
str2 aftermodified memory address is:52070828
i thought result was same on both sceniros by using string Builder key wor but result is different from expected.
result is
using string keyword (immutable) str1 text is: Interview Memory address of str1 is: 52066096 str1 modified text is: InterviewHappy str1 memeory address is: 52069440
Using String Builder to (mutable string) str2 text is:Interview str2 memory address is: 52070212 str2 modified text is: InterviewSelection Process str2 aftermodified memory address is:52070828