| To | Do this | 
| Copy a value type variable | Simply make the copy. Because the variable is a value type, you will have two copies of the same value. For example: int i = 42; int copyi = i; | 
| Copy a reference type variable | Simply make the copy. Because the variable is a reference type, you will have two references to the same object. For example: Circle c = new Circle(42); Circle refc = c; | 
| Pass an argument to a ref parameter | Prefix the argument with the ref keyword. This makes the parameter an alias for the actual argument rather than a copy of the argument. For example: static void Main()  
{  
    int arg = 42;  
    DoWork(ref arg);  
    Console.WriteLine(arg);  
} | 
| Pass an argument to an out parameter | Prefix the argument with the out keyword. This makes the parameter an alias for the actual argument rather than a copy of the argument. For example: static void Main()  
{  
    int arg = 42;  
    DoWork(out arg);  
    Console.WriteLine(arg);  
} | 
| Box a value | Initialize or assign a variable of type object to the value. For example: object o = 42; | 
| Unbox a value | Cast the object reference that refers to the boxed value to the type of the value. For example: int i = (int)o; |