This article is currently in the process of being translated into Spanish (~99% done).
Partial Classes
Si has trabajado con C#, o tal vez incluso con otro lenguaje de programación, estás acostumbrado al hecho de que el nombre de una clase debe ser único - no puede haber dos clases con el mismo nombre, a menos que estén en diferentes espacios de nombres. Sin embargo, en un punto, Microsoft decidió cambiar esto, con la introducción de algo llamado clases parciales.
Cuando defines tu clase con la palabra clave partial, permites que tu o alguien más pueda extender la funcionalidad de tu clase con otra clase, la cual también debe ser declarada como parcial. Esto es útil en las siguientes situaciones:
- Cuando tienes una clase muy grande - puedes mantenerla en múltiples archivos, para hacer mas fácil trabajar con varias partes de las clases. Por ejemplo, podrías tener todas las propiedades en un archivo y todos los métodos en otro, aún teniendo una sola clase.
- Cuando trabajas con un designer, como el de Visual Studio - por ejemplo con WinForms, donde todo el código automaticamente generado por el designer se puede guardar en un archivo, mientras tu código se guarda en otro archivo.
Ilustraré esto con un ejemplo. En mi proyecto tengo el archivo Program.cs, usualmente encontrado en una aplicación de consola. Además del mismo, he agregado dos archivos: PartialClass1.cs y PartialClass2.cs. Aquí están los archivos y sus contenidos:
PartialClass1.cs
using System;
namespace PartialClasses
{
public partial class PartialClass
{
public void HelloWorld()
{
Console.WriteLine("Hello, world!");
}
}
}
PartialClass2.cs
using System;
namespace PartialClasses
{
public partial class PartialClass
{
public void HelloUniverse()
{
Console.WriteLine("Hello, universe!");
}
}
}
Nota que ambas clases están definidas con la palabra clave partial y tienen los mismos nombres. También nota que cada una de ellas define un método - HelloWorld() y HelloUniverse(). En nuestro Program.cs ahora podemos usar esta clase como si hubiese sido definida en un solo lugar, como cualquier otra clase:
using System;
namespace PartialClasses
{
class Program
{
static void Main(string[] args)
{
PartialClass pc = new PartialClass();
pc.HelloWorld();
pc.HelloUniverse();
}
}
}
Resumen
Con clases parciales, puedes particionar tus clases en múltiples archivos, ya sea porque la definición de la clase es muy grande o cuando las herramientas con las que trabajas se benefician con ello, como con el designer de Visual Studio para WinForms.