передача параметра в объявление класса в C# 8

Начиная с C# 8, мы можем сделать что-то вроде:

public class MyClass(int a)
{
    // note, this is NOT the constructor, but the class declaration
}

Как это работает?

в C#7 это было отмечено как экспериментальная функция; но я не могу найти документацию об этом. Является ли все еще экспериментальным с С# 8?

Я вижу это:

введите здесь описание изображения


person Thomas    schedule 03.10.2019    source источник
comment
Начиная с C# 8, мы можем сделать что-то вроде: -- вы уверены в этом? SharpLab   -  person canton7    schedule 03.10.2019
comment
Где вы прочитали об этом объявлении класса? Можно ссылку на документ?   -  person Progman    schedule 03.10.2019
comment
страница состояния функций языка C# не t указывает, что это будет в C# 8.   -  person Bill Tür    schedule 03.10.2019
comment
Да, это еще не реализовано. Это для будущей версии С# (возможно). Функция называется типом записи. .   -  person Matthew Watson    schedule 03.10.2019
comment
Я добавил скриншот; Я не могу его скомпилировать, потому что, по-видимому, он не предназначен для использования, но с C# 7.3 он помечен как экспериментальный, а с C# 8 — нет. Это использование Rider (Resharper) на Mac.   -  person Thomas    schedule 03.10.2019
comment
Какую проблему это решит?   -  person 500 - Internal Server Error    schedule 03.10.2019
comment
Что должен делать public class MyClass(int a)? Как называется эта функция?   -  person Olivier Rogier    schedule 03.10.2019
comment
@OlivierRogier Это называется Запись.   -  person Matthew Watson    schedule 03.10.2019
comment
Это не компилируется для меня в приложении .NET Core 3 (которое использует C # 8) - вы используете предварительную версию? Раньше это использовалось в качестве основных конструкторов в черновиках C# 6, и в настоящее время над ним работают как записи. Я почти уверен, что это все еще экспериментальный вариант, поскольку он не входит в текущий список предложений, но, учитывая тот факт, что мы не получали реальных, определенных спецификаций языка со времен C# 5, трудно сказать. :-П   -  person Jeroen Mostert    schedule 03.10.2019
comment
Понятия не имею, я только что обнаружил, что он помечен как экспериментальный; так что что-то существует, и его статус изменился между версиями 7.3 и 8.   -  person Thomas    schedule 03.10.2019
comment
Возможный дубликат Как объявить тип записи C#?   -  person Olivier Rogier    schedule 03.10.2019
comment
@OlivierRogier, я думаю, ты прав! Интересно, почему статус изменился между 7.3 и 8; это не помечено как экспериментальное в моей версии 8   -  person Thomas    schedule 03.10.2019
comment
Я думаю, вам нужно спросить у JetBrains — позволить этой функции скомпилироваться и пометить ее как экспериментальную — это все, что касается Rider. Я не знаю, сделала ли Visual Studio что-либо из этого.   -  person canton7    schedule 03.10.2019
comment
@canton7, я открою с ними тикет, чтобы узнать, что случилось.   -  person Thomas    schedule 03.10.2019
comment
Обратите внимание, что все, что Райдер/Решарпер может сказать по этому поводу, не является окончательным; оба, скорее всего, будут следовать фактическим разработкам в CoreFX/Roslyn. Во всяком случае, это, вероятно, следует рассматривать как ошибку, поскольку реальные производственные версии компилятора, которые люди могут использовать, не предлагают этого, даже в качестве экспериментальной функции.   -  person Jeroen Mostert    schedule 03.10.2019
comment
Я нашел это совершенно случайно: хотел быстро добавить параметр в конструктор и, увидев такое же имя, начал вводить его в объявлении класса :)   -  person Thomas    schedule 03.10.2019