Nuevas características en C# 7+ – Parte 2

En un post anterior comenzamos una serie para conocer algunas de las nuevas características de la versión 7 del lenguaje C#. A continuación seguiremos conociendo más novedades.

Discards

Son variables temporales, dummy que tienen la intención de no ser usadas en la aplicación. Para indicar que una variable es un discard se hace asignándole el underscore (_) como su nombre.

Son muy útiles en algunos casos donde queremos que una variable sea ignorada y no sea accesible por los desarrolladores.

Un ejemplo de uso es con variables de salida. Por ejemplo, el siguiente código:

int price;
if (int.TryParse("10"out price))
{
    // ...
}

Podría ser escrito de esta manera usando discard variables:

if (int.TryParse("10"out int _))
{
    // ...
}

Y podemos ver que si luego intentamos acceder a la variable marcada como discard, obtendremos un error

DiscardVariableCS7

También podemos hacer uso de discard variables cuando tenemos tuplas y solo nos interesan algunos de los valores de la misma. Por ejemplo:

static void Main(string[] args)
{
    // Discard value in tuples
    var (_, _, role) = GetEmployeeData();
    if (role == "Contractor")
    {
        // ...
    }
}
 
public static (string name, int age, string role) GetEmployeeData()
{
    return ("Juan", 10, "Contractor");
}

Structs de solo lectura

Los Structs son usados como una manera más eficiente de pasar datos o como una estructura de datos básicos que es usada a través de toda una aplicación. En la versión de C# 7.2 se adicionó la habilidad de marcarlas como read only, para evitar de esta manera modificaciones malintencionadas, ya que los campos solo pueden ser inicializados en el constructor del tipo.

Este es un ejemplo de un struct read only:

public readonly struct RequestParameters
{
    public string Filter { get; }
    public int Page { get; }
        
    public RequestParameters(string filter, int page)
    {
        Filter = filter;
        Page = page;
    }
}

Y esto es lo que pasa si queremos tratar de cambiar un valor después de inicializado el struct:

ReadOnlyStructCS7

¡En próximos posts vamos a estar explorando más novedades!

El código de ejemplo de este post lo puedes encontrar en mi cuenta de GitHub.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: