| |
|
What is the difference between value type and reference type? Can
a value type contain NULL values?
In simple words, all value based types are allocated on the stack, while all
reference based types are allocated on the heap. What does this mean? A value
type contains the actual value. A reference type contains a reference to the value.
When a value type is assigned to another value type, it is copied. When a reference
type is assigned to another reference type, a reference is assigned to the value.
By saying stack, we mean things are kept one on top of the other. We keep track
of each value at the top. By saying heap, we mean things are kept in a mashed order.
We keep track of each value by its address, that is referenced by a pointer to it.
All value types are implicitly derived from System.ValueType. This class actually
overrides the implementation in System.Object, the base class for all objects which is a
reference type itself.
Data types like
integers, floating point numbers, character data, Boolean values, Enumerations and
Structures are examples of Value Types. Classes, Strings, Arrays are examples of
Reference Types.
A value type may not contain NULL values. Reference types may contain NULL values.
It is not possible to derive new types from Value Types. This is possible in
Reference types. However, Value Types like Structures can implement interfaces.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| |