dotnet/roslyn

Improve CS9105 in static context

Open

#82423 opened on Feb 16, 2026

View on GitHub
 (4 comments) (0 reactions) (0 assignees)C# (20,414 stars) (4,257 forks)batch import
Area-CompilersConcept-Diagnostic ClarityFeature - Primary Constructorshelp wanted

Description

CS9105 is reported either when accessing the primary constructor within a static context (see here), or within another constructor (see here). As stated in https://github.com/dotnet/roslyn/issues/82351, this could be improved by adding a separate error for when it occurs in a static context, to point the problem out more clearly

Sample with static context (first link):

class Program(int item)
{
    static void Main()
    {
        item.ToString(); // error CS9105: Cannot use primary constructor parameter 'int item' in this context.

        // Compare with:
        this.ToString(); // error CS0026: Keyword 'this' is not valid in a static property, static method, or static field initializer
    }
}

/Program.cs(5,9): error CS9105: Cannot use primary constructor parameter 'int item' in this context.

Sample with another constructor (second link):

class Program(int item)
{
    public Program(float f) : this(0) {
        _ = item;
    }
}

/Program.cs(4,13): error CS9105: Cannot use primary constructor parameter 'int item' in this context.

Contributor guide