CA1857: A paraméter állandót vár az optimális teljesítményhez

Tulajdonság Érték
Szabályazonosító CA1857
Cím A paraméter állandót vár az optimális teljesítményhez
Kategória Teljesítmény
A javítás kompatibilitástörő vagy nem törik Nem törés
Alapértelmezés szerint engedélyezve a .NET 8-ban Figyelmeztetésként

Ok

Érvénytelen argumentumot ad át a rendszer egy jegyzettel ellátott paraméternek ConstantExpectedAttribute.

Szabály leírása

Ez a szabály olyan helyeket jelöl a kódban, ahol:

Szabálysértések kijavítása

Javítsa ki a kódot a kapott hibaüzenetnek megfelelően.

1. példa (attribútum várható)

A következő kódrészlet a CA1857 megsértése esetén jelenik meg:

public interface I1<T>
{
    T M1(T operand1, [ConstantExpected] T operand2);
}

public class C1 : I1<int>
{
    public int M1(int operand1, int operand2) =>
        throw new NotImplementedException();
}

A következő kódrészlet kijavítja a szabálysértést:

public interface I1<T>
{
    T M1(T operand1, [ConstantExpected] T operand2);
}

public class C1 : I1<int>
{
    public int M1(int operand1, [ConstantExpected] int operand2) =>
        throw new NotImplementedException();
}

2. példa (állandó nem állandó)

A következő kódrészlet a CA1857 megsértése esetén jelenik meg:

static void M1(int i) => M2(i);
static void M2([ConstantExpected] int i) { }

A következő kódrészlet kijavítja a szabálysértést:

static void M1([ConstantExpected] int i) => M2(i);
static void M2([ConstantExpected] int i) { }

3. példa (érvénytelen állandó)

A következő kódrészlet a CA1857 megsértése esetén jelenik meg:

static void M1() => M2((string)(object)20);
static void M2([ConstantExpected] string s) { }

A következő kódrészlet kijavítja a szabálysértést:

static void M1() => M2("20");
static void M2([ConstantExpected] string s) { }

4. példa (konstans a határon kívül)

A következő kódrészlet a CA1857 megsértése esetén jelenik meg:

static void M1() => M2(5);
static void M2([ConstantExpected(Min = 3, Max = 4)] int i) { }

A következő kódrészlet kijavítja a szabálysértést:

static void M1() => M2(4);
static void M2([ConstantExpected(Min = 3, Max = 4)] int i) { }

Mikor kell letiltani a figyelmeztetéseket?

Ha a teljesítmény nem okoz problémát, nyugodtan el lehet tiltani a szabály figyelmeztetését.

Figyelmeztetés mellőzése

Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.

#pragma warning disable CA1857
// The code that's violating the rule is on this line.
#pragma warning restore CA1857

Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none a konfigurációs fájlban.

[*.{cs,vb}]
dotnet_diagnostic.CA1857.severity = none

További információ: Kódelemzési figyelmeztetések letiltása.