Thursday, 30 August 2012

why ref keyword used to pass class object??

class object is already a reference type so if we passed in function & changed value then it reflects outside function. i used ref keyword to value type variable like int to get changes in outside function. but i understand new thing is when we instantiate any class, two space allocated in memory. reference stored in stack & value stored in heap when u pass any reference type object in functions it create new memory space for that reference its called copy reference. differnece between ref keyword used in function & without ref keyword
 private void mainf()   
  {   
    ClsData ObjData = new ClsData(1, "sai");   
    ChangeNumber(ObjData);    
  }  
without ref keyword - if u assign null to that object it doesnt reflect outside function means that copy reference get erased.
 private void ChangeNumber(ClsData ObjData)    
  {   
   ObjData.Name = "Swapnil";   
   ObjData.Number = 3;   
   ObjData = null; //copy reference get erased not actual object reference , doesn't reflect outside function   
  }   
but when u used ref keyword it doesnt create copy it pass same object to that function so if u assign null to that object it reflects outside
 ChangeNumber(ref ObjData);  
  private void ChangeNumber(ref ClsData ObjData)    
  {   
   ObjData.Name = "Swapnil";   
   ObjData.Number = 3;   
   ObjData = null; // reflect outside function    
  }   
thats it.

No comments:

Post a Comment