Collection assignment having different behaviour

CSharp · Console

/Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
					
public class Program
{
	public static void Main()
	{

		// Collection of objects
		
		IList<Test> initialCollection = new List<Test>();
		initialCollection.Add(new Test(){ Value = 30});
		
		Console.WriteLine("Before update method : " + initialCollection.Last().Value );
		
	    UpdateValueCollection(initialCollection);
		
		Console.WriteLine("After update method : " + initialCollection.Last().Value );
		
		IList<Test> check = new List<Test>();
	    check.Add(new Test(){ Value = 100});
        initialCollection = check;
		
		Console.WriteLine("Same update method code added as consecutive line : " + initialCollection.Last().Value );
		
	}
	
	public static void UpdateValueCollection(IList<Test> lstTest)
	{
        IList<Test> check = new List<Test>();
	    check.Add(new Test(){ Value = 100});
        lstTest = check;
	}
}

public class Test
{
	public int Value {get; set;}
}
;