How to declare a C# Record Type?

Jeremy Thompson picture Jeremy Thompson · Mar 30, 2017 · Viewed 23.3k times · Source

I read on a blog that C# 7 will feature record types

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

However when I tried it, I get these errors

CS0116 A namespace cannot directly contain members such as fields or methods
CS1022 Type or namespace definition, or end-of-file expected
CS1514 { expected

How is this supposed to work?

Update: it's a feature of C# 9 https://devblogs.microsoft.com/dotnet/welcome-to-c-9-0/

Answer

DavidG picture DavidG · Mar 30, 2017

Update:

C# 9 now contains record types.

public record Person
{
    public string LastName { get; }
    public string FirstName { get; }

    public Person(string first, string last) => (FirstName, LastName) = (first, last);
}

Old answer:

Record types are not (yet) implemented in C#. See the proposal in the official GitHub repository:

https://github.com/dotnet/csharplang/blob/master/proposals/records.md

Discuss or vote at https://github.com/dotnet/csharplang/issues/39