0Pricing
C# Academy · Lección

Expresiones new con tipo de destino

Simplifique la creación de objetos mediante la inferencia del tipo de destino.

Expresiones new con tipo de destino es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C# Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C# Academy incluye 4 lecciones en total.

new con tipo de destino

Desde C# 9, puede escribir Type x = new(); y omitir el tipo después de new cuando se conoce el tipo de destino.

using System;
using System.Collections.Generic;

class Program {
    static void Main() {
        List<int> numbers = new();
        numbers.Add(1);
        Console.WriteLine(numbers.Count);
    }
}

Eliminar redundancias

Cuando la variable ya indica el tipo, repetirlo después de new es innecesario. El new() vacío lo elimina.

using System;
using System.Text;

class Program {
    static void Main() {
        StringBuilder sb = new();
        sb.Append("Hi");
        Console.WriteLine(sb.ToString());
    }
}

Pasar argumentos al constructor

El new() con tipo de destino sigue aceptando argumentos del constructor dentro de los paréntesis.

using System;

class Point {
    public int X, Y;
    public Point(int x, int y) { X = x; Y = y; }
}
class Program {
    static void Main() {
        Point p = new(3, 4);
        Console.WriteLine(p.X + ", " + p.Y);
    }
}

Con inicializadores de objetos

Puede combinar new con tipo de destino con un bloque inicializador de objetos.

using System;

class User {
    public string Name;
    public int Age;
}
class Program {
    static void Main() {
        User u = new() { Name = "Ann", Age = 30 };
        Console.WriteLine(u.Name + " " + u.Age);
    }
}

En campos

El new con tipo de destino también funciona en inicializadores de campos, lo que mantiene concisas las declaraciones.

using System;
using System.Collections.Generic;

class Program {
    static List<string> items = new();
    static void Main() {
        items.Add("a");
        Console.WriteLine(items.Count);
    }
}

En argumentos de métodos

Cuando un parámetro tiene un tipo conocido, puede pasar new() directamente como argumento.

using System;
using System.Collections.Generic;

class Program {
    static void Print(List<int> list) {
        Console.WriteLine(list.Count);
    }
    static void Main() {
        Print(new());
    }
}

Devolver new()

Si se conoce el tipo devuelto por un método, puede devolver new() sin repetir el nombre del tipo.

using System;
using System.Collections.Generic;

class Program {
    static List<int> Make() {
        return new() { 1, 2, 3 };
    }
    static void Main() {
        Console.WriteLine(Make().Count);
    }
}

Comparación con var

var x = new List<int>() indica el tipo a la derecha; List<int> x = new() lo indica a la izquierda. Elija la opción que se lea mejor.

using System;
using System.Collections.Generic;

class Program {
    static void Main() {
        var a = new List<int>();
        List<int> b = new();
        Console.WriteLine(a.Count + b.Count);
    }
}

La ambigüedad es un error

Si el compilador no puede determinar el tipo de destino, new() produce un error. El destino debe quedar claro por el contexto.

using System;

class Program {
    static void Main() {
        object o = new object();
        Console.WriteLine(o.GetType().Name);
    }
}

Legibilidad con tipos largos

new con tipo de destino resulta especialmente útil para tipos genéricos extensos, ya que evita escribir el tipo dos veces.

using System;
using System.Collections.Generic;

class Program {
    static void Main() {
        Dictionary<string, List<int>> map = new();
        map["a"] = new() { 1, 2 };
        Console.WriteLine(map["a"].Count);
    }
}

Un estilo moderno

new con tipo de destino mantiene limpias las declaraciones y conserva la tipificación estática completa y las comprobaciones del compilador.

using System;
using System.Collections.Generic;

class Program {
    static void Main() {
        Queue<string> q = new();
        q.Enqueue("first");
        Console.WriteLine(q.Dequeue());
    }
}

Comprobación rápida

Compruebe su comprensión de las expresiones new con tipo de destino.

Resumen

new() con tipo de destino permite omitir el tipo después de new cuando el tipo de destino ya se conoce, lo que reduce la duplicación en declaraciones, campos, argumentos y valores devueltos.

Sigue aceptando argumentos de constructor e inicializadores, falla cuando el tipo es ambiguo y complementa a var como estilo moderno totalmente seguro en cuanto a tipos.

Preguntas frecuentes

¿La lección «Expresiones new con tipo de destino» es gratis?

Sí — el texto completo de «Expresiones new con tipo de destino» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C# Academy, actualiza a CoddyKit PRO. El curso de C# Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Expresiones new con tipo de destino»?

Simplifique la creación de objetos mediante la inferencia del tipo de destino. Practicas C# Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar C# Academy?

No se requiere experiencia previa. C# Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Expresiones new con tipo de destino»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de C# Academy?

Sí. Cada lección de C# Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Inferencia de tipos de variables locales con var
  2. Cuándo evitar var
  3. El tipo dynamic
  4. Expresiones new con tipo de destino
← Volver a C# Academy