Creating Objects
In Chapter 3, a distinction is drawn
between value types and reference types. The primitive C# types
(int, char, etc.) are value
types, and are created on the stack. Objects, however, are reference
types, and are created on the heap, using the keyword
new, as in the following:
Time t = new Time( );
t does not actually contain the value for the
Time object; it contains the address of that
(unnamed) object that is created on the heap. t
itself is just a reference to that object.
Constructors
In
Example 4-1, notice that the statement that creates the
Time object looks as though it is invoking a
method:
Time t = new Time( );
In fact, a
method is invoked
whenever you instantiate an object. This method is called a
constructor, and you must either define one as
part of your class definition or let the Common Language Runtime
(CLR) provide one on your behalf. The job of a constructor is to
create the object specified by a class and to put it into a
valid state. Before the constructor runs, the
object is undifferentiated memory; after the constructor completes,
the memory holds a valid instance of the class
type.
The Time class of Example 4-1
does not define a constructor. If a constructor is not declared, the
compiler provides one for you. The default constructor creates the
object but takes no other action. Member variables are initialized to
innocuous values (integers to 0, strings to the empty string, etc.).
Table 4-2 lists the default values assigned to primitive types. ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access