Как объявить тип записи C#?
я прочитала в блоге что C# 7 будет содержать типы записей
class studentInfo(string StudentFName, string StudentMName, string StudentLName);
однако, когда я попробовал, я получаю эти ошибки
CS0116 пространство имен не может непосредственно содержать такие члены, как поля или методы
CS1022 тип или определение пространства имен, или ожидаемый конец файла
CS1514 { ожидал
как это должно работать?
4 ответов
типы записей (пока) не реализованы в C#. См. предложение в официальном репозитории GitHub:
https://github.com/dotnet/csharplang/blob/master/proposals/records.md
обсудить или проголосовать на https://github.com/dotnet/csharplang/issues/39
типы записей были в дорожной карте для C# 7.0, но в конечном итоге были отложены до более поздней версии языка.
процитировать Мадса Торгерсена в ответ на этот блог,
[первичные конструкторы] все еще на радаре,вместе с соответствующей концепцией типов записей (которую мы рассматривали для C# 7.0), и я надеюсь, что мы сможем приземлиться на лучший дизайн-возможно, тот, который охватывает оба.
As из выпуска C# 7,предложение GitHub для этой языковой функции по-прежнему указывает, что реализация "выполняется."
чтобы добавить к другим ответам, вы можете легко отслеживать, когда новые функции карандашом появляются в C# в эти дни, глядя на язык вех. Есть по крайней мере три v7.X релизы запланированы, но записи теперь запланировано на C# 8. Как и было запланировано для C# 6 и C# 7, обработайте эту цель щепоткой соли...
до C# 7.0 вы объявляете такие классы:
хотя типы записей еще не реализованы в C# 7.0 (как подробно описано в других ответах), вы можете сократите код с помощью авто-свойства только для чтения, представленного в 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;
}
}