As I've mentioned, partial classes allow you to separate
code for a class into multiple class definitions. So as an example I will write
a few class definitions. One will be a whole definition of a class without
using partial classes, and the other one will be the same class split into two
partial classes. Observe here my single definition class of AIPlayer.
Listing 1: A Standard Class
public class AIPlayer
{
public AIPlayer()
{
// Construct your class here.
}
public Move GetMove()
{
// Choose the best move and return it.
}
}
In this simple example I've defined a basic constructor as
well as one simple method. Not much, but we don't need to have a lot for our
example here. The important thing to note here is the possibility to create
these classes and how they work. So notice on the next one how we will separate
these two methods, the constructor and the GetMove function, into two separate
class definitions.
Listing 2: A Class Split Into Two Partial Classes
public partial class AIPlayer
{
public AIPlayer()
{
// Construct your class here.
}
}
public partial class AIPlayer
{
public Move GetMove()
{
// Choose the best move and return it.
}
}
Without having the partial keyword in there I would probably
get a compiler error. The reason for this is that I would be declaring two
different classes in the same namespace with the same name, and that would
generate the error. Since I have the partial keyword there, the compiler knows
that I am just extending the existing class. It will take that into account and
will combine the code before trying to compile it.
As a note, make sure to use the partial keyword on ALL
definitions of the class even the original one. This is not necessary for VB,
but in C# all of the classes must have the partial keyword. I think it is great
that this is included, because it is a hint to a programmer that there might be
another piece of a class somewhere else. If you ever see the partial keyword on
classes you're working with, it is a nice warning that there might be more to
the class elsewhere.