c# language-features c#-7.0

¿Cómo declarar un tipo de registro de C#?



language-features c#-7.0 (4)

Leí en un blog que C # 7 contará con tipos de registro

class studentInfo(string StudentFName, string StudentMName, string StudentLName);

Sin embargo cuando lo probé me sale estos errores.

CS0116 Un espacio de nombres no puede contener directamente miembros como campos o métodos
CS1022 Definición de tipo o espacio de nombres, o fin de archivo esperado
CS1514 {esperado

¿Cómo se supone que esto funcione?


Antes de C # 7.0 declara clases como esta:

Aunque los tipos de registro aún no se han implementado en C # 7.0 (como se detalla en las otras respuestas), puede acortar su código utilizando propiedades automáticas de solo lectura , introducidas en C # 6.0:

public class studentInfo { public string StudentFName { get; } public string StudentMName { get; } public string StudentLName { get; } public studentInfo(string strFN, string strMN, string strLN) { StudentFName = strFN; StudentMName = strMN; StudentLName = strLN; } }



Los tipos de registro estaban en la hoja de ruta para C # 7.0, pero finalmente se retrasaron hasta una versión posterior del idioma.

Para citar a Mads Torgersen en respuesta a esta publicación de blog ,

[Los constructores principales] aún están en el radar, junto con el concepto relacionado de tipos de registros (que consideramos para C # 7.0) , y tengo la esperanza de que podamos aterrizar en un mejor diseño, tal vez uno que abarque ambos.

A partir del lanzamiento de C # 7, la https://github.com/dotnet/csharplang/blob/master/proposals/records.md para esta característica de lenguaje aún indica que la implementación está "En curso".


Para agregar a las otras respuestas, puede rastrear fácilmente cuando se escriben nuevas funciones para que aparezcan en C # en estos días observando los hitos del idioma . Hay al menos tres versiones v7.x planificadas, pero los registros ahora están programados para C # 8 . Como estaba programado para C # 6 y C # 7, trate este objetivo con una pizca de sal ...