Professional Documents
Culture Documents
LESSON 12 - STRUTS
B E G I N N E R S ’ S
C# TUTORIAL
1 2 . S T R U T S
WWW.CSHARP–STATION.COM
PAGE 1 OF 3
COPYRIGHT © 2000–2003 C# STATION , ALL RIGHTS RESERVED
BEGINNERS C# TUTORIAL
LESSON 12 - STRUTS
A struct allows you to create new value-type objects that are similar to the
built-in types (int, float, bool, etc.). When would you use a struct instead
of a class? Think about how the built-in types are used. They have values
and distinct operations to manipulate those values. If you have a need to
create an object that behaves in this manner, consider implementing it as a
struct. Later in this article, I'll explain a couple rules for using structs,
which will give you a better idea of when to use them. In the meantime,
here's an example.
using System;
struct Point
{
public int x;
public int y;
newPt.x = x + pt.x;
newPt.y = y + pt.y;
return newPt;
}
}
/// <summary>
/// Example of declaring and using a struct
/// </summary>
class StructExample
{
static void Main(string[] args)
{
Point pt1 = new Point(1, 1);
Point pt2 = new Point(2, 2);
Point pt3;
pt3 = pt1.Add(pt2);
PAGE 2 OF 3
COPYRIGHT © 2000–2003 C# STATION , ALL RIGHTS RESERVED
BEGINNERS C# TUTORIAL
LESSON 12 - STRUTS
}
}
Listing 12-1 shows how to declare and use a struct. It is easy to tell that a
type is a struct because of the keywordstruct used in its definition. The
basic layout of a struct is much like a class, but with differences, which will
be explained in following paragraphs. The Point struct has a constructor
which initializes its fields to the x and y values passed in. It also has a
method named Add(), which will accept another Point struct, add it to this
struct, and return a new struct.
Notice that there is a Point struct declared in the Add() method. It does
not need to be instantiated with a new operator, like a class. When this
occurs, the struct is implicitly instantiated with its default (or
parameterless) constructor. The parameterless constructor initializes all
struct fields to default values. i.e. integrals are 0, floating points are 0.0,
and booleans are false. It's illegal to define a parameterless constructor for
a struct.
pt3: 3:3
Another difference between structs and classes is that structs can not have
destructors. Also, structs cannot inherit another class or struct or be
inherited from. However, a struct may inherit multiple interfaces. An
interface is a C# reference type with members that do not have
implementations. Any class or struct inheriting an interface must
implement every one of that interface's methods. Interfaces are a subject
for a later lesson.
In summary, you now know how to create a struct. You can also instantiate
and use structs. When deciding whether to implement a type as a struct or
class, you should consider how the type will be used. If you need to define
a parameterless constructor, then a class is your only choice. Also, consider
that a struct incurs less overhead than a class because, being a value type,
it is stored on the stack rather than how a class is stored, on the heap.
PAGE 3 OF 3
COPYRIGHT © 2000–2003 C# STATION , ALL RIGHTS RESERVED