Types In C#

Types In C#

The C# language types are divided into three main categories:

? Value types

? reference types

? pointer types

** Value types include simple types (e.g., char, int, and float), enum types, and struct types.

** Reference types include class types, interface types, delegate types, and array types.

** Pointer types can be used only in unsafe code.

Value type variables are different from reference type variables. Value type variables directly contain their data, whereas reference type variables store references to objects.
With reference types, it is possible for two variables to reference the same object, and thus possible for operations on one variable to affect the object referenced by the other variable. With value types, the variables each have their own copy of the data and it is not possible for operations on one to affect the other.
using System;
class type
	public int Value = 0;
class Test
	static void Main() 
		int val1 = 0;
		int val2 = val1;
		val2 = 123;
		type ref1 = new type();
		type ref2 = ref1;
		ref2.Value = 123;
		Console.WriteLine("Values: {0}, {1}", val1, val2);
		Console.WriteLine("References: {0}, {1}", ref1.Value, ref2.Value);
The output of the program is
Values: 0, 123
Refs: 123, 123
The assignment to the local variable val1 does not impact the local variable val2 because both local variables are of a value type (the type int) and each local variable of a value type has its own storage. In contrast, the assignment ref2.Value = 123; affects the object that both ref1 and ref2 reference.