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 9-ben | Figyelmeztetésként |
Érvénytelen argumentumot ad át a rendszer egy jegyzettel ellátott paraméternek ConstantExpectedAttribute.
Ez a szabály olyan helyeket jelöl a kódban, ahol:
- Implementáljon egy örökölt metódust, amely az ConstantExpectedAttribute attribútumot használja, de nem jelöli meg a paramétert.ConstantExpectedAttribute
- Adjon át egy nem állandó argumentumot egy olyan paraméternek, amely rendelkezik az ConstantExpectedAttribute attribútummal.
- Adjon át egy érvénytelen állandó argumentumot egy attribútummal rendelkező ConstantExpectedAttribute paraméternek.
- Adjon át egy állandó argumentumot egy olyan paraméternek, amely rendelkezik az ConstantExpectedAttribute attribútummal, és az argumentum túllépi a tartományt vagy Max az Min értékeket.
Javítsa ki a kódot a kapott hibaüzenetnek megfelelően.
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();
}
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) { }
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) { }
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) { }
Ha a teljesítmény nem okoz problémát, nyugodtan el lehet tiltani a szabály figyelmeztetését.
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.
.NET-visszajelzés
A(z) .NET egy nyílt forráskód projekt. Visszajelzés adásához válasszon egy hivatkozást: