Visual Studio 2010 - Visual C# class (C# Reference) Classes are declared using the keyword class, as shown in the following example:
class TestClass
{
// Methods, properties, fields, events, delegates
// and nested classes go here.
}

Remarks
Unlike C++, only single inheritance is allowed in C#. In other words, a class can inherit implementation from one base class only. However, a class can implement more than one interface. The following table shows examples of class inheritance and interface implementation: Inheritance | Example |
|---|
None | class ClassA { } | Single | class DerivedClass: BaseClass { } | None, implements two interfaces | class ImplClass: IFace1, IFace2 { } | Single, implements one interface | class ImplDerivedClass: BaseClass, IFace1 { } |
The access levels protected and private are only allowed on nested classes. You can also declare generic classes that have type parameters; see Generic Classes for more information. A class can contain declarations of the following members:

Example
The following example demonstrates declaring class fields, constructors, and methods. It also demonstrates object instantiation and printing instance data. In this example, two classes are declared, the Child class, which contains two private fields (name and age) and two public methods. The second class, StringTest, is used to contain Main.
class Child
{
private int age;
private string name;
// Default constructor:
public Child()
{
name = "N/A";
}
// Constructor:
public Child(string name, int age)
{
this.name = name;
this.age = age;
}
// Printing method:
public void PrintChild()
{
Console.WriteLine("{0}, {1} years old.", name, age);
}
}
class StringTest
{
static void Main()
{
// Create objects by using the new operator:
Child child1 = new Child("Craig", 11);
Child child2 = new Child("Sally", 10);
// Create an object using the default constructor:
Child child3 = new Child();
// Display results:
Console.Write("Child #1: ");
child1.PrintChild();
Console.Write("Child #2: ");
child2.PrintChild();
Console.Write("Child #3: ");
child3.PrintChild();
}
}
/* Output:
Child #1: Craig, 11 years old.
Child #2: Sally, 10 years old.
Child #3: N/A, 0 years old.
*/

Comments
Notice, in the preceding example, that the private fields (name and age) can only be accessed through the public methods of the Child class. For example, you cannot print the child's name, from the Main method, using a statement like this:
Console.Write(child1.name); // Error
Accessing private members of Child from Main would only be possible if Main were a member of the class. Types declared inside a class without an Access Modifier default to private, so the data members in this example would still be private if the keyword were removed. Finally, notice that for the object created using the default constructor (child3), the age field was initialized to zero by default.

C# Language Specification
For more information, see the C# Language Specification. The language specification is the definitive source for C# syntax and usage.

See Also
ReferenceConceptsOther Resources
|
Visual Studio 2010 - Visual C# class (Referencia de C#) Las clases se declaran mediante la palabra clave class, como se muestra en el ejemplo siguiente:
class TestClass
{
// Methods, properties, fields, events, delegates
// and nested classes go here.
}

Comentarios
A diferencia de C++, en C# sólo se permite la herencia simple. En otras palabras, una clase puede heredar la implementación de una sola clase base. Sin embargo, una clase puede implementar más de una interfaz. La siguiente tabla muestra ejemplos de herencia de clases e implementación de interfaces: Herencia | Ejemplo |
|---|
Ninguno | class ClassA { } | Simple | class DerivedClass: BaseClass { } | Ninguna, implementa dos interfaces | class ImplClass: IFace1, IFace2 { } | Simple, implementa una interfaz | class ImplDerivedClass: BaseClass, IFace1 { } |
Los niveles de acceso protected y private sólo se permiten en clases anidadas. También se pueden declarar clases genéricas que tengan parámetros de tipo; vea Clases genéricas (Guía de programación de C#) para obtener más información. Una clase puede contener declaraciones de los siguientes miembros:

Ejemplo
En el siguiente ejemplo se muestra la declaración de campos de clase, constructores y métodos. También muestra la creación de instancias de objetos y la impresión de datos de instancia. En este ejemplo, se declaran dos clases, la clase Child, que contiene dos campos privados (name y age) y dos métodos públicos. La segunda clase, StringTest, se utiliza para contener Main.
class Child
{
private int age;
private string name;
// Default constructor:
public Child()
{
name = "N/A";
}
// Constructor:
public Child(string name, int age)
{
this.name = name;
this.age = age;
}
// Printing method:
public void PrintChild()
{
Console.WriteLine("{0}, {1} years old.", name, age);
}
}
class StringTest
{
static void Main()
{
// Create objects by using the new operator:
Child child1 = new Child("Craig", 11);
Child child2 = new Child("Sally", 10);
// Create an object using the default constructor:
Child child3 = new Child();
// Display results:
Console.Write("Child #1: ");
child1.PrintChild();
Console.Write("Child #2: ");
child2.PrintChild();
Console.Write("Child #3: ");
child3.PrintChild();
}
}
/* Output:
Child #1: Craig, 11 years old.
Child #2: Sally, 10 years old.
Child #3: N/A, 0 years old.
*/

Comentarios
En el ejemplo anterior, observe que sólo se puede obtener acceso a los campos privados (name y age) a través de los métodos públicos de la clase Child. Por ejemplo, no es posible imprimir el valor name de la clase child desde el método Main con una instrucción como ésta:
Console.Write(child1.name); // Error
El acceso a los miembros privados de Child desde Main sólo sería posible si Main fuera un miembro de la clase. Los tipos declarados en una clase sin un modificador de acceso tienen como valor predeterminado private, de modo que los miembros de datos de este ejemplo seguirían siendo private aunque se quite la palabra clave. Por último, observe que, para el objeto creado mediante el constructor predeterminado (child3), el campo age se inicializó a cero de forma predeterminada.

Especificación del lenguaje C#
Para obtener más información, vea la Especificación del lenguaje C#. La especificación del lenguaje es la fuente definitiva de la sintaxis y el uso de C#.

Vea también
ReferenciaConceptosOtros recursos
|