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é, obtengo estos errores.
CS0116 Un espacio de nombres no puede contener directamente miembros como campos o métodos
CS1022 Tipo o definición de espacio de nombres, o final de archivo esperado
CS1514 { esperado
¿Cómo se supone que esto funcione?
Actualización: es una característica de C# 9 https://devblogs.microsoft.com/dotnet/welcome-to-c-9-0/
C# 9 ahora contiene tipos de registro .
public record Person { public string LastName { get; } public string FirstName { get; } public Person(string first, string last) => (FirstName, LastName) = (first, last); }Los tipos de registro no están (todavía) implementados en C#. Ver 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 de C# 7.0, pero finalmente se retrasaron hasta una versión posterior del lenguaje.
Para citar a Mads Torgersen en respuesta a esta publicación de blog ,
[Los constructores principales] todavía están en el radar, junto con el concepto relacionado de tipos de registro (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 propuesta de GitHub para esta función de lenguaje todavía indica que la implementación está "en progreso".
[ Reescrito para reflejar el estado actual de las cosas ]
Para agregar a las otras respuestas, puede rastrear fácilmente cuándo las características de C# están marcadas para aparecer en C# en estos días. Por ejemplo, el problema "Registros" de Champion muestra el estado de pensamiento en torno a los registros. Records ahora está programado para C# 9. Pero esa característica también se promocionó anteriormente para C# 6, C# 7 y C# 8, por lo que sigue siendo solo una aspiración.