dotnet/roslyn

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

Offen

#84.987 geöffnet am 20.08.2026

 (0 Kommentare) (0 Reaktionen) (1 zugewiesene Person)C# (4.257 Forks)batch import
Area-CompilersFeature - Nullable Reference Typeshelp wanted

Repository-Metriken

Stars
 (20.414 Sterne)
PR-Merge-Metriken
 (Durchschn. Merge 6T 17h) (256 gemergte PRs in 30 T)

Beschreibung

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; }   
}

Contributor Guide