public class Test
{
    public string Name;
    public void CallFunctionByObjectRef(Test a)
    {
        a.Name = "BCD";
        a = null;
    }
    public void CallFunctionByObjectRefTORef(ref Test a)
    {
        a.Name = "BCD";
        a = null;
    }
}
class Program
{
    static void Main(string[] args)
    {
        Test test = new Test();
        test.Name = "ABC";
        test.CallFunctionByObjectRef(test);
        Test test1 = new Test();
        test1.Name = "ABC";
        test1.CallFunctionByObjectRefTORef(ref test1);
        Console.WriteLine(test.Name);
        Console.WriteLine(test1.Name);
        Console.Read();
    }
}
In above called two function(using ref keyword, pass by object). I am getting different output from them. But class object by default pass by reference, why I am getting different output.
 
     
     
     
    