Search code examples
c#language-featuresc#-7.0

How to declare a C# Record Type?


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/


Solution

  • 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