| Description | C++/CLI | C# | 
						
								| Allocate reference type | ReferenceType^ h = gcnew ReferenceType; | ReferenceType h = new ReferenceType(); | 
						
								| Allocate value type | ValueType v(3, 4); | ValueType v = new ValueType(3, 4); | 
						
								| Reference type, stack semantics | ReferenceType h; | N/A | 
						
								| Calling Dispose method | ReferenceType^ h = gcnew ReferenceType; 
												delete h;
										 | ReferenceType h = new ReferenceType(); 
												((IDisposable)h).Dispose();
										 | 
						
								| Implementing Dispose method | ~TypeName() {} | void IDisposable.Dispose() {} | 
						
								| Implementing Finalize method | !TypeName() {} | ~TypeName() {} | 
						
								| Boxing | int^ h = 123; | object h = 123; | 
						
								| Unboxing | int^ hi = 123; 
												int c = *hi;
										 | object h = 123; 
												int i = (int) h;
										 | 
						
								| Reference type definition | ref class ReferenceType {}; 
												ref struct ReferenceType {};
										 | class ReferenceType {} | 
						
								| Value type definition | value class ValueType {}; 
												value struct ValueType {};
										 | struct ValueType {} | 
						
								| Using properties | h.Prop = 123; 
												int v = h.Prop;
										 | h.Prop = 123; 
												int v = h.Prop;
										 | 
						
								| Property definition | property String^ Name {
 String^ get()
 {
 return m_value;
 }
 void set(String^ value)
 {
 m_value = value;
 }
 }
 | string Name {
 get
 {
 return m_name;
 }
 set
 {
 m_name = value;
 }
 |