Creating Structs
You create
an instance of a struct by using the new keyword
in an assignment statement, just as you would for a class. In Example 7-1, the
Tester
class creates an instance of
Location as follows:
Location loc1 = new Location(200,300);
Here the new instance is named loc1 and is passed
two values, 200 and 300.
Structs as Value Types
The definition of the Tester
class in Example 7-1 includes a
Location object, loc1, created
with the values 200 and 300.
This line of code calls the Location constructor:
Location loc1 = new Location(200,300);
Then WriteLine( )
is called:
Console.WriteLine("Loc1 location: {0}", loc1);
WriteLine( ) is expecting an object; but, of
course, Location is a struct (a value type). The
compiler automatically boxes the struct (as it would any value type),
and it is the boxed object that is passed to WriteLine( ). ToString( )
is called on the boxed object, and because the struct (implicitly)
inherits from object, it is able to respond
polymorphically, overriding the method just as any other object
might:
Loc1 location: 200, 300
Structs are value objects, however, and when passed to a function,
they are passed by value, as seen in the next line of code, in which
the loc1 object is passed to the myFunc( ) method:
t.myFunc(loc1);
In myFunc new values are assigned to
x and y, and then these new
values are printed out:
Loc1 location: 50, 100
When you return to the calling function (Main( )
) and call WriteLine( ) again, the values are unchanged:
Loc1 location: ...
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