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.
Tip
VB6
programmers
take
note: While there is a performance penalty in
using the VB6 keywords Dim and
New on the same line, in C# this penalty has been
removed. Thus in C# there is no drawback to using the
new keyword when declaring an object variable.
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 ...
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