dotnet/roslyn

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

Ouverte

#84 987 ouverte le 20 août 2026

 (0 commentaire) (0 réaction) (1 personne assignée)C# (4 257 forks)batch import
Area-CompilersFeature - Nullable Reference Typeshelp wanted

Métriques du dépôt

Stars
 (20 414 étoiles)
Métriques de merge PR
 (Merge moyen 6j 17h) (256 PRs mergées en 30 j)

Description

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

Guide contributeur