FR3Y4
FR3Y4

Reputation: 1

Why can't record struct contain init property?

This is my C# code:

record struct recName(int A) { }

And this is generated code behind the scenes:

internal struct recName : IEquatable<recName>
{
    public recName(int A)
    {
        <A>k__BackingField = A;
    }

    private int <A>k__BackingField;
    public int A
    {
        get { return <A>k__BackingField; }
        set { <A>k__BackingField = value; }
    }
}

Why structs properties generated with get/set properties, but type declared with same syntax like this is generated as a 'get/init'. record class recName(int A) { }:

internal class recName : IEquatable<recName>
{
    public recName(int A)
    {
        <A>k__BackingField = A;
    }

    private readonly int <A>k__BackingField;
    public int A
    {
        get
        {
            return <A>k__BackingField;
        }
        init
        {
            <A>k__BackingField = value;
        }
    }
}

I cant understand why 'record struct' cant contain get/init property?

Upvotes: 0

Views: 64

Answers (0)

Related Questions