Creating Structs
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 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: 200, ...
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