Ok, So I am a beginner in C# and I learned the concept of Reference Type and Value Type. Also I understood that Value type is on Stack where as Reference types are stored in Heap. And then we need to to manually allocate memory to Reference type and all of that. But I am not able to understand below Behaviour. Please guide me.
Example 1:
    var arr1 = new int[3] { 1, 2, 3 }; // memory allocated
    var arr2 = arr1; // another variable created but pointing to same memory in Heap
    arr2[0] = 2; // value in array 2 changed
    System.Console.WriteLine("");
    foreach (var item in arr1)
    {
        System.Console.WriteLine(item);
    }
    System.Console.WriteLine("------------");
    foreach (var item in arr2)
    {
        System.Console.WriteLine(item);
    }
Output as :
            arr1: 2,2,3
            arr2: 2,2,3
Conclusion: Since both were pointing to same memory location. So, when value in Array 2 is changed the value in Array1 also got affected. So far so good.
Now there is one more reference type which is string.
Consider below Example 2:
   var Name = "Mosh";
   var FName = Name;
   FName = "Hello";
   System.Console.WriteLine(Name);
   System.Console.WriteLine(FName);
Output as:
Mosh
Hello
Expected Output:
Hello
Hello
Since I changed the value for FName I was expecting the Name value also to be changed as both must be pointing to same memory location. It's one of the simplest question on SO, I am a beginner so bear with me.
 
     
     
    