The predefined reference types are object and string. The type object is the
ultimate base type of all other types. The type string is used to represent Unicode
string values. Values of type string are immutable.
The ultimate base type of all other types object o = null;
String type; a string is a sequence of Unicode characters string s = "hello";
Predefined value types
The predefined value types include signed and unsigned integral types, floating-point
types, and the types bool, char, and decimal. The signed integral types are sbyte,
short, int, and long; the unsigned integral types are byte, ushort, uint, and ulong;
and the floating-point types are float and double.
Eliminate a time wasters in life;
The Law of an Excluded Alternative;
Identify a major time-wasters;
Practical ways to overcome and avoid them if possible.
sbyte 8-bit signed integral type sbyte val = 12;
short 16-bit signed integral type short val = 12;
int 32-bit signed integral type int val = 12;
long 64-bit signed integral type long val1 = 12;
long val2 = 34L;
byte 8-bit unsigned integral type byte val1 = 12;
ushort 16-bit unsigned integral type ushort val1 = 12;
uint 32-bit unsigned integral type uint val1 = 12;
float Single-precision floating point type float val = 1.23F;
double Double-precision floating point type double val1 = 1.23;
double val2 = 4.56D;
The bool type is used to represent Boolean values: values that are either true or
false. The inclusion of bool makes it easier to write self-documenting code, and
also helps eliminate the all-too-common C++ coding error in which a developer
mistakenly uses "=" when "==" should have been used. In C#, the example
int i =…;
if (i = 0) // the test should be (i == 0)
results in a compile-time error because the expression i = 0 is of type int,
and if statements require an expression of type bool.
a bool value is either true or false
bool val1 = true;
bool val2 = false;
The char type is used to represent Unicode characters. A variable of type char
represents a single 16-bit Unicode character.
Character type; a char value is a Unicode character char val = 'h';
The decimal type is appropriate for calculations in which rounding errors caused by
floating point representations are unacceptable. Common examples include financial
calculations such as tax computations and currency conversions. The decimal type
provides 28 significant digits.
Precise decimal type with 28 significant digits
decimal val = 1.23M;
Each of the predefined types is shorthand for a system-provided type. For example,
the keyword int refers to the struct System.Int32. As a matter of style, use of the
keyword is favored over use of the complete system type name.
Two expressions of type int are considered equal if they represent the same integer
Two expressions of type object are considered equal if both refer to the same object,
or if both are null.
Two expressions of type string are considered equal if the string instances have
identical lengths and identical characters in each character position, or if both
Differences Between Values Types and Reference Types.
The following table shows some of the differences between values
types and reference types.
Allocated on stack
Allocated on heap
A value type variable contains the data itself
Reference type variable contains the address of
memory location where data is actually stored
When we copy a value type variable to another
one, the actual data is copied and each variable can be independently
When copying a reference type variable to another
variable, only the memory address is copied. Both variables will still
point to the same memory location, which means, if we change one
variable, the value will be changed for the other variable too.
integer, float, boolean, double etc are value