CA1043: Integraal of tekenreeksargument gebruiken voor indexeerfuncties
Eigenschappen | Weergegeven als |
---|---|
Regel-id | CA1043 |
Titel | Integraal of tekenreeksargument gebruiken voor indexeerfuncties |
Categorie | Ontwerpen |
Oplossing is brekend of niet-brekend | Breken |
Standaard ingeschakeld in .NET 9 | Nee |
Oorzaak
Een type bevat een indexeerfunctie die gebruikmaakt van een ander indextype dan System.Int32, System.Int64, System.Objectof System.String.
Deze regel kijkt standaard alleen naar extern zichtbare typen, maar dit kan worden geconfigureerd.
Beschrijving van regel
Indexeerfuncties, dat wil gezegd, geïndexeerde eigenschappen, moeten gehele getallen of tekenreekstypen voor de index gebruiken. Deze typen worden doorgaans gebruikt voor het indexeren van gegevensstructuren en het vergroten van de bruikbaarheid van de bibliotheek. Het gebruik van het Object type moet worden beperkt tot gevallen waarin het specifieke gehele getal of tekenreekstype niet kan worden opgegeven tijdens het ontwerp. Als voor het ontwerp andere typen voor de index zijn vereist, moet u bedenken of het type een logisch gegevensarchief vertegenwoordigt. Als het geen logische gegevensopslag vertegenwoordigt, gebruikt u een methode.
Schendingen oplossen
Als u een schending van deze regel wilt oplossen, wijzigt u de index in een geheel getal of tekenreekstype of gebruikt u een methode in plaats van de indexeerfunctie.
Wanneer waarschuwingen onderdrukken
Onderdrukt een waarschuwing van deze regel pas nadat u zorgvuldig rekening hebt gehouden met de noodzaak van de niet-standaardindexeerfunctie.
Een waarschuwing onderdrukken
Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.
#pragma warning disable CA1043
// The code that's violating the rule is on this line.
#pragma warning restore CA1043
Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none
ervan in op het configuratiebestand.
[*.{cs,vb}]
dotnet_diagnostic.CA1043.severity = none
Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.
Code configureren om te analyseren
Gebruik de volgende optie om te configureren op welke onderdelen van uw codebase deze regel moet worden uitgevoerd.
U kunt deze optie configureren voor alleen deze regel, voor alle regels waarop deze van toepassing is, of voor alle regels in deze categorie (ontwerp) waarop deze van toepassing is. Zie de configuratieopties voor de codekwaliteitsregel voor meer informatie.
Specifieke API-oppervlakken opnemen
U kunt instellen op welke onderdelen van uw codebase deze regel moet worden uitgevoerd, op basis van hun toegankelijkheid. Als u bijvoorbeeld wilt opgeven dat de regel alleen moet worden uitgevoerd op het niet-openbare API-oppervlak, voegt u het volgende sleutel-waardepaar toe aan een .editorconfig-bestand in uw project:
dotnet_code_quality.CAXXXX.api_surface = private, internal
Opmerking
In het volgende voorbeeld ziet u een indexeerfunctie die gebruikmaakt van een Int32 index.
string[] Month = new string[] { "Jan", "Feb", "..." };
public string this[int index]
{
get => Month[index];
}
Private month() As String = {"Jan", "Feb", "..."}
Default ReadOnly Property Item(index As Integer) As String
Get
Return month(index)
End Get
End Property