dotnet/roslyn

Default value of a struct type should give nullable initial state to some field-backed properties

Aperta

#84.987 aperta il 20 ago 2026

 (0 commenti) (0 reazioni) (1 assegnatario)C# (4257 fork)batch import
Area-CompilersFeature - Nullable Reference Typeshelp wanted

Metriche repository

Star
 (20.414 stelle)
Metriche merge PR
 (Merge medio 6g 17h) (256 PR mergiate in 30 g)

Descrizione

The current behavior is dependent on whether we are currently constructing the struct instance, and feels a little inconsistent.

Basically, it feels like we should be able to get a similar behavior for member flow states, when any default value of a struct type is used, as when we are working out the initial state of struct fields in a constructor.

Note that 'null-resilient' properties using field keyword would be excepted from this. Their initial flow state would be the same as the property. Currently working on a change to make that work more consistently in constructors. (resolving #77991).

I consider this issue low priority

struct S
{
    public void M()
    {
        this = default;
        this.Prop2.ToString(); // no warning
    }

    public S()
    {
        this = default;
        Prop2.ToString(); // warning
    }

    public string Prop2 { get; set; }   
}

Guida contributor