Compartir a través de


new (Operador, Referencia de C#)

Se utiliza para crear objetos e invocar constructores. Por ejemplo:

Class1 obj  = new Class1();

También se utiliza para crear instancias de tipos anónimos:

var query = from cust in customers
            select new {Name = cust.Name, Address = cust.PrimaryAddress};

El operador new también se utiliza para invocar el constructor predeterminado de los tipos de valor. Por ejemplo:

int i = new int();

En la instrucción anterior se inicializa i con el valor 0, que es el predeterminado para el tipo int. Esa instrucción tiene el mismo efecto que:

int i = 0;

Para obtener una lista de valores predeterminados, vea Tabla de valores predeterminados (Referencia de C#).

Recuerde que es un error declarar un constructor predeterminado para un tipo struct, ya que todos los tipos de valor poseen implícitamente un constructor público predeterminado. Es posible declarar constructores parametrizados en un tipo struct para establecer sus valores iniciales, pero sólo es necesario si se requieren valores distintos del predeterminado.

Los objetos de tipo valor, tales como los structs, se crean en la pila, mientras que los objetos de tipo referencia, tales como las clases, se crean en el montón. Ambos tipos de objetos se destruyen automáticamente, pero los objetos basados en tipos de valor se destruyen cuando salen del ámbito, mientras que los objetos basados en tipos de referencia se destruyen en un momento no especificado después de quitar la última referencia a ellos. En los tipos de referencia que consumen ciertos recursos, como grandes cantidades de memoria, identificadores de archivo o conexiones de red, a veces es conveniente emplear la finalización determinista para asegurarse de que el objeto se destruirá lo antes posible. Para obtener más información, vea using (Instrucción, Referencia de C#).

El operador new no se puede sobrecargar.

Si el operador new no puede asignar memoria, producirá la excepción OutOfMemoryException.

Ejemplo

En el siguiente ejemplo, se crean e inicializan, mediante el operador new, un objeto struct y un objeto class y, a continuación, se les asignan valores. Se muestran los valores predeterminados y asignados.

struct SampleStruct
{
   public int x;
   public int y;

   public SampleStruct(int x, int y)
   {
      this.x = x;
      this.y = y;
   }
}

class SampleClass
{
   public string name;
   public int id;

   public SampleClass() {}

   public SampleClass(int id, string name)
   {
      this.id = id;
      this.name = name;
   }
}

class ProgramClass
{
   static void Main()
   {
      // Create objects using default constructors:
      SampleStruct Location1 = new SampleStruct();
      SampleClass Employee1 = new SampleClass();

      // Display values:
      Console.WriteLine("Default values:");
      Console.WriteLine("   Struct members: {0}, {1}",
             Location1.x, Location1.y);
      Console.WriteLine("   Class members: {0}, {1}",
             Employee1.name, Employee1.id);

      // Create objects using parameterized constructors:
      SampleStruct Location2 = new SampleStruct(10, 20);
      SampleClass Employee2 = new SampleClass(1234, "Cristina Potra");

      // Display values:
      Console.WriteLine("Assigned values:");
      Console.WriteLine("   Struct members: {0}, {1}",
             Location2.x, Location2.y);
      Console.WriteLine("   Class members: {0}, {1}",
             Employee2.name, Employee2.id);
   }
}
/*
Output:
Default values:
   Struct members: 0, 0
   Class members: , 0
Assigned values:
   Struct members: 10, 20
   Class members: Cristina Potra, 1234
*/

Observe en el ejemplo que el valor predeterminado de una cadena es null. Por lo tanto, no se muestra.

Especificación del lenguaje C#

Para obtener más información, consulte 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

Referencia

Palabras clave de C#

Palabras clave de operadores (Referencia de C#)

new (Referencia de C#)

Tipos anónimos (Guía de programación de C#)

Conceptos

Guía de programación de C#

Otros recursos

Referencia de C#