Test de C#: 24 preguntas para comprobar lo que sabes

¿Cuánto C# sabes de verdad? Estas 24 preguntas repasan las 8 lecciones de nuestro curso de C#: dotnet run, tipos y null, switch con patrones, colecciones, métodos y excepciones, clases y records, interfaces, iteradores, LINQ, async y un proyecto con JSON. Elige una respuesta en cada pregunta y pulsa Corregir al final: verás tu nota, los aciertos por lección y la explicación de cada respuesta.

No hace falta registrarse y nada se envía a ningún sitio: el test se corrige en tu propio navegador. Todas las respuestas con código se comprobaron compilando y ejecutando el código con .NET 10 y C# 14.

Pregunta 1Lección 1: Primeros pasos

Con .NET 10, ¿qué hace dotnet run hola.cs?

Pregunta 2Lección 1: Primeros pasos

¿Compila este programa?

Console.WriteLine("Hola")
Pregunta 3Lección 1: Primeros pasos

¿Qué produce el compilador de C# al compilar un programa?

Pregunta 4Lección 2: Tipos y null

¿Qué escribe este programa?

Console.WriteLine(7 / 2);
Pregunta 5Lección 2: Tipos y null

¿Compila este programa?

var x;
x = 5;
Console.WriteLine(x);
Pregunta 6Lección 2: Tipos y null

¿Qué escribe este programa?

string? s = null;
Console.WriteLine(s?.Length ?? -1);
Pregunta 7Lección 3: Control y colecciones

¿Qué escribe este programa?

int n = 7;
var texto = n switch
{
    < 0 => "negativo",
    0 => "cero",
    _ => "positivo"
};
Console.WriteLine(texto);
Pregunta 8Lección 3: Control y colecciones

¿Qué escribe este programa?

int[] a = [10, 20, 30, 40];
Console.WriteLine(a[^1]);
Console.WriteLine(string.Join(",", a[1..3]));
Pregunta 9Lección 3: Control y colecciones

¿Qué pasa con este programa?

var precios = new Dictionary<string, decimal>();
precios["pan"] = 1.20m;
Console.WriteLine(precios["leche"]);
Pregunta 10Lección 4: Métodos y excepciones

¿Qué escribe este programa?

Saludar(saludo: "Buenas", nombre: "Ana");

void Saludar(string nombre, string saludo = "Hola")
{
    Console.WriteLine($"{saludo}, {nombre}");
}
Pregunta 11Lección 4: Métodos y excepciones

¿Qué escribe este programa?

Probar();

void Probar()
{
    try
    {
        Console.WriteLine("a");
        return;
    }
    finally
    {
        Console.WriteLine("b");
    }
}
Pregunta 12Lección 4: Métodos y excepciones

¿Compila este programa?

bool Dividir(int a, int b, out int resultado)
{
    if (b == 0) return false;
    resultado = a / b;
    return true;
}

Console.WriteLine(Dividir(10, 2, out int r));
Pregunta 13Lección 5: Clases y records

¿Qué escribe este programa?

var a = new Punto(1, 2);
var b = new Punto(1, 2);
Console.WriteLine(a == b);

record Punto(int X, int Y);
Pregunta 14Lección 5: Clases y records

¿Compila este programa?

var libro = new Libro { Titulo = "Rayuela" };
libro.Titulo = "Ficciones";

class Libro
{
    public string Titulo { get; init; } = "";
}
Pregunta 15Lección 5: Clases y records

¿Qué escribe este programa?

var a = new Punto { X = 1 };
var b = a;
b.X = 2;
Console.WriteLine(a.X);

struct Punto
{
    public int X;
}
Pregunta 16Lección 6: Interfaces y genéricos

¿Qué escribe este programa?

Animal a = new Perro();
a.Hablar();

class Animal
{
    public virtual void Hablar() => Console.WriteLine("...");
}

class Perro : Animal
{
    public new void Hablar() => Console.WriteLine("Guau");
}
Pregunta 17Lección 6: Interfaces y genéricos

¿Compila este programa?

IFigura f = new Circulo();

interface IFigura
{
    double Area();
}

class Circulo : IFigura
{
    public double Radio { get; set; } = 1;
}
Pregunta 18Lección 6: Interfaces y genéricos

¿En qué orden escribe este programa?

var numeros = Numeros();
Console.WriteLine("antes");
foreach (var n in numeros) Console.WriteLine(n);

IEnumerable<int> Numeros()
{
    Console.WriteLine("inicio");
    yield return 1;
}
Pregunta 19Lección 7: LINQ y async

¿Qué escribe este programa?

int[] datos = [5, 3, 8, 1];
var resultado = datos.Where(n => n > 2).OrderBy(n => n).Select(n => n * 10);
Console.WriteLine(string.Join(" ", resultado));
Pregunta 20Lección 7: LINQ y async

¿Qué escribe este programa?

var lista = new List<int> { 1, 2 };
var dobles = lista.Select(x => x * 2);
lista.Add(3);
Console.WriteLine(dobles.Count());
Pregunta 21Lección 7: LINQ y async

¿Compila este programa?

Console.WriteLine(Valor());

int Valor()
{
    await Task.Delay(10);
    return 1;
}
Pregunta 22Lección 8: Un proyecto completo

¿Qué hace dotnet publish -c Release en un proyecto?

Pregunta 23Lección 8: Un proyecto completo

¿Cómo se añade un paquete de NuGet a un proyecto?

Pregunta 24Lección 8: Un proyecto completo

Este programa compila, pero al ejecutarlo con dotnet run persona.cs lanza InvalidOperationException: Reflection-based serialization has been disabled. ¿Por qué?

using System.Text.Json;

Console.WriteLine(JsonSerializer.Serialize(new Persona("Ana", 31)));

record Persona(string Nombre, int Edad);

Las preguntas siguen el orden del curso. Si fallas alguna, el enlace de su explicación te lleva a la lección donde se explica con ejemplos.