## Why is this an issue?

Creating an array or using a collection expression solely for the purpose of passing it to a `params` parameter is unnecessary. Simply pass the elements directly, and they will be automatically consolidated into the appropriate collection type.

## How to fix it

### Code examples

#### Noncompliant code example

    public void Base()
    {
        Method(new string[] { "s1", "s2" }); // Noncompliant: resolves to string[] overload
        Method(new string[] { });            // Noncompliant: resolves to string[] overload
        Method(["s3", "s4"]);                // Noncompliant: resolves to ReadOnlySpan overload
        Method(new string[12]);              // Compliant: resolves to string[] overload
    }

    public void Method(params string[] args)
    {
        // ...
    }

    public void Method(params ReadOnlySpan<string> args) // C# 13 params collections
    {
        // C# 13 params collection
    }

#### Compliant solution

    public void Base()
    {
        Method("s1", "s2");     // resolves to ReadOnlySpan overload
        Method();               // resolves to ReadOnlySpan overload
        Method("s3", "s4");     // resolves to ReadOnlySpan overload
        Method(new string[12]); // resolves to string[]  overload
    }

    public void Method(params string[] args)
    {
        // ..
    }

    public void Method(params ReadOnlySpan<string> args) // C# 13 params collections
    {
        // ..
    }

## Resources

### Documentation

- Microsoft Learn - `params` modifier
- Microsoft Learn - C# 13 `params` collections
- Microsoft Learn - Collection expressions