Códigos secretos de C# que nadie usa y que deberías conocer

C# banner codes en SofTim

C#

// Delegado Func para una función que toma un entero y devuelve un booleano
Func<int, bool> esPar = numero => numero % 2 == 0;
Console.WriteLine(esPar(4)); // True
Console.WriteLine(esPar(7)); // False

// Action para una función que toma una cadena y no devuelve nada
Action<string> saludar = nombre => Console.WriteLine($"Hola, {nombre}!");
saludar("Carlos"); // Hola, Carlos!

C#

string nombreUsuario = null;
string nombreMostrar = nombreUsuario ?? "Invitado"; // Si nombreUsuario es null, nombreMostrar será "Invitado"
Console.WriteLine(nombreMostrar); // Invitado

int? contador = null;
contador ??= 0; // Si contador es null, se le asigna 0
Console.WriteLine(contador); // 0

C#

string nombre = "Ana";
int edad = 32;
string mensaje = $"El usuario {nombre} tiene {edad} años.";
Console.WriteLine(mensaje); // El usuario Ana tiene 32 años.

C#

var mensaje = "Hola desde var!"; // El compilador infiere que mensaje es string
var numeros = new List<int> { 1, 2, 3 }; // El compilador infiere que numeros es List<int>

foreach (var numero in numeros)
{
    Console.WriteLine(numero);
}
C-Sharp Languaje Web SofTim

C#

object obj = "Hola";

if (obj is string s) // Pattern matching 'is'
{
    Console.WriteLine($"La longitud de la cadena es: {s.Length}");
}

object figura = new Rectangulo { Ancho = 5, Alto = 10 };

switch (figura)
{
    case Circulo c:
        Console.WriteLine($"Es un círculo con radio {c.Radio}");
        break;
    case Rectangulo r when r.Ancho == r.Alto: // Pattern matching 'when' con condición
        Console.WriteLine($"Es un cuadrado de lado {r.Ancho}");
        break;
    case Rectangulo r:
        Console.WriteLine($"Es un rectángulo con ancho {r.Ancho} y alto {r.Alto}");
        break;
    case null:
        Console.WriteLine("La figura es nula");
        break;
    default:
        Console.WriteLine("Tipo de figura desconocido");
        break;
}

public class Circulo { public double Radio { get; set; } }
public class Rectangulo { public double Ancho { get; set; } public double Alto { get; set; } }

C#

public class Persona
{
    private string Nombre { get; }
    public int Edad { get; }

    public Persona(string nombre, int edad) => (Nombre, Edad) = (nombre, edad); // Constructor

    public string Presentarse() => $"Hola, mi nombre es {Nombre} y tengo {Edad} años."; // Método

    private string _profesion;
    public string Profesion
    {
        get => _profesion ?? "Desconocida"; // Propiedad con getter de cuerpo de expresión
        set => _profesion = value;          // Propiedad con setter de cuerpo de expresión
    }
}

C#

public static (string nombre, int edad) ObtenerDatosUsuario()
{
    return ("Ricardo", 28);
}

var (nombre, edad) = ObtenerDatosUsuario();
Console.WriteLine($"Nombre: {nombre}, Edad: {edad}"); // Nombre: Ricardo, Edad: 28

C#

var (nombreUsuarioIgnorado, edadUsuario) = ObtenerDatosUsuario();
Console.WriteLine($"Edad del usuario: {edadUsuario}"); // Edad del usuario: 28

foreach (var _ in Enumerable.Range(1, 5)) // Descartar el valor del elemento
{
    Console.WriteLine("Iteración!");
}

C#

using static System.Math;
using static System.Console;

double radio = 5;
double area = PI * Pow(radio, 2);
WriteLine($"El área del círculo es: {area}");

C#

var nombres = new List<string> { "Elena", "David", "Sofía" };
var persona = new Persona { Nombre = "Javier", Edad = 40, Profesion = "Ingeniero" };

C# está repleto de características que, aunque a veces pasen desapercibidas, pueden hacer tu código más limpio, eficiente y expresivo. Explorar estas «joyas ocultas» te permitirá escribir código más profesional y disfrutar aún más del poder del lenguaje C#. Visita el sitio oficial de C# y conoce todo lo que puedes hacer con este lenaguaje.

Scroll al inicio