¿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 aún no están implementados en C #. Vea la propuesta en el repositorio oficial de GitHub:
https://github.com/dotnet/csharplang/blob/master/proposals/records.md
Discuta o vote en https://github.com/dotnet/csharplang/issues/39
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 ...