Difference Between Value vs Reference Type Variables

Find here the difference between a value type and a reference type variables in C#
Difference between Value vs Reference Type variables


Hello! Hope you must have gone through our most interesting .net core interview questions, mvc, ASP.Net and c# articles. Now, we will see the difference between value type and reference type variables. All the data Types in .NET are either handled by Value Type or Reference Type variables.

A Value Type variable possesses the data within its memory area and a Reference Type variable carries a pointer to another memory area that carries the real data. The Value Type variables get stored in the stack while Reference Type variables get stored in the heap.

Value Type variable:

A Value Type variable stores its contents in the memory which is allotted on the stack. Often, when we create a Value Type variable, a unique space in memory is allotted to get the value stored and that variable carries a value certainly. If you assign this variable to another variable, the value will be copied directly and both variables start functioning independently. Previously declared data types, structures, and enums are also considered value types and perform in the same approach. Also, Value type variables can be produced at the time of compilation and can be stored in stack memory. The garbage collector is unable to access this stack because of this variable.

int x=21;


Here the value 21 is stored in the stack memory area.

Reference Type variable

Reference Type variables are utilized by a reference that possesses a reference or address to another object but not the same object itself. Because reference-type variables depict the location details of that variable rather than the same data itself, assigning a specific reference variable to another one, doesn't duplicate the data. Instead, it generates a 2nd copy of the reference variable, which relates to the same particular location of the specific heap as the actual value. Reference Type variables get stored in various areas of memory named heap. It means when a reference type variable is no longer utilized, it can be captioned for garbage collection.

Examples of reference-type variables are Classes, Arrays, Objects, Interfaces, Indexers, etc.


int iArray[] =new int[31];

In the above example with code, the space desired for the 31 integers that compose up the array is allotted on the heap.

Heap and Stack

Heap is utilized for dynamic memory allotment, and Stack is utilized for static memory allotment, but both are stored in the RAM of pc.

Let's discuss some more value type and reference type variables.  

Class and Struct

Class is considered as a variable of pass-by-reference and Struct is considered as a variable of pass-by-copy, it indicates that Class is a reference category variable and its object is built on the heap memory whereas the structure is a value category variable and its object is built on the stack memory.

Dynamic Data Type

The dynamic data type concept brings some new features to C# 4. However, Dynamic Type depicts that you will be able to store any kind of value or data in the dynamic variable because verifying of data type for dynamic categories of variables occurs at run-time.


I hope the above article on the differentiation of value type and reference type could help freshers or beginners in the development field. These variables are a significant part of database interaction for end-users.


Anjan kant

Outstanding journey in Microsoft Technologies (ASP.Net, C#, SQL Programming, WPF, Silverlight, WCF etc.), client side technologies AngularJS, KnockoutJS, Javascript, Ajax Calls, Json and Hybrid apps etc. I love to devote free time in writing, blogging, social networking and adventurous life

Post A Comment: