Nuevas funciones en C # 7

C # 7 agrega muchas características nuevas con un enfoque especial en la simplicidad en la codificación y el rendimiento mejorado. Proporciona mucho enfoque en el consumo de datos, la simplificación de código y el rendimiento, y está diseñado para eliminar el dolor de tener que escribir código adicional en más de una forma.

A continuación, presentamos un vistazo rápido a las novedades y mejoras de C # 7.

  • Soporte para funciones locales
  • Soporte mejorado para tipos de tuplas
  • Tipos de registro
  • La coincidencia de patrones
  • Tipos de referencia que no aceptan valores NULL
  • Tipos inmutables
  • Mejor soporte para variables externas

Mejor soporte para variables externas

La capacidad de declarar una variable de salida justo en el punto de uso es una gran característica nueva en C # 7. Aquí hay un fragmento de código de ejemplo que ilustra esto.

public void Save(Product p)

{

    p.SaveData(out int x);

    //Usual code

}

Un buen lugar para usar la variable es dentro de su bloque try. Simplemente use una variable booleana de salida donde un tipo de retorno de verdadero indica que la operación es exitosa, falso de lo contrario.

La coincidencia de patrones

C # 7 proporciona un excelente soporte para la coincidencia de patrones. Puede utilizar la coincidencia de patrones en cualquier tipo de datos, incluso también en tipos de datos personalizados. Además, puede aprovechar la coincidencia de patrones para extraer valores de una expresión. Aquí hay un fragmento de código que ilustra la coincidencia de patrones en el trabajo.

object obj = "This is a demonstration of pattern matching in C# 7";

if (obj is string str)

{

    Console.WriteLine(str);

}

Soporte para funciones locales

Es posible que a menudo necesite una función auxiliar que deba usarse solo una vez, tal vez en un solo método. Ahora puede declarar tales funciones dentro de otra función. Estas funciones se conocen como funciones locales. En esencia, el soporte para funciones locales le permite declarar métodos dentro de un alcance de bloque. Aunque el hecho de que esto fuera posible usando los tipos Func y Action con métodos anónimos en las versiones anteriores del lenguaje C #, hubo pocos desafíos. No admitían genéricos, params y parámetros de referencia y salida.

Mejor soporte para Tuples

Una tupla es una agrupación temporal de valores. Es similar a una clase POCO pero se crea sobre la marcha. La principal ventaja de usar una tupla es permitir que un método devuelva múltiples valores. Es posible que desee utilizar una tupla para representar un conjunto de datos heterogéneos y proporcionar una forma fácil de acceder a esos datos. Las tuplas no son nada nuevo y existen desde hace bastante tiempo. Tiene soporte para tuplas en los lenguajes de programación F # y Python. Puede aprovechar una tupla para almacenar una secuencia finita ordenada de secuencia finita inmutable de datos homogéneos o heterogéneos de tamaños fijos.

Ahora tiene soporte para literales Tuple y también deconstrucción de Tuple. En C # 7, una tupla se considera un tipo de valor. Por lo tanto, es un tipo mutable y mucho más eficiente en lo que respecta al rendimiento.

Tipos de referencia que no aceptan valores NULL

Los tipos de valor que aceptan valores NULL se introdujeron por primera vez en C # 2.0. El tipo de referencia no anulable es exactamente lo opuesto a esta característica. Básicamente, se utiliza un tipo de referencia que no admite valores NULL para denotar un tipo de referencia que se garantiza que no será nulo. Así es como se declara un tipo de referencia que no admite valores NULL en C # 7:

string! str; //This is a non-nullable reference type

Mejor soporte para objetos inmutables

Un objeto inmutable es aquel cuyo estado no se puede alterar una vez creado. Esto hace que un objeto inmutable sea seguro para subprocesos. Suponga que crea una clase que contiene una propiedad que tiene un captador pero no un definidor. Sí, aparentemente, parece que una instancia de la clase es inmutable. Sin embargo, en un momento posterior, si alguien agrega un setter para la misma propiedad, la inmutabilidad se pierde, ¿no es así?

Aquí es exactamente donde entra en juego el mejor soporte para tipos inmutables. Con C # 7, puede crear una nueva instancia basada en otra instancia. Así es como se puede lograr esto.

var firstObject = new Employee(101);

var secondObject = firstObject with {EmployeeId = 102};

Tipos de registro

Los tipos de registro le permiten crear un tipo utilizando solo propiedades. En esencia, un tipo de registro es un tipo de datos que se compone únicamente de propiedades. El siguiente fragmento de código ilustra cómo se puede declarar un tipo de registro.

 class Rectangle(int Height, int Breadth);