CA1043 : Utiliser un argument de chaîne ou intégral pour les indexeurs
TypeName |
UseIntegralOrStringArgumentForIndexers |
CheckId |
CA1043 |
Catégorie |
Microsoft.CSharp |
Modification avec rupture |
Oui |
Cause
Un type public ou protégé contient un indexeur public ou protégé qui utilise un type d'index autre que System.Int32, System.Int64, System.Object ou System.String.
Description de la règle
Les indexeurs, c'est-à-dire les propriétés indexées, doivent utiliser des types entier ou de chaîne pour l'index. Ces types sont généralement utilisés pour indexer des structures de données et augmentent la facilité d'utilisation de la bibliothèque. L'utilisation du type Object doit se restreindre aux cas où le type entier ou de chaîne spécifique ne peut pas être spécifié au moment du design. Si le design nécessite d'autres types pour l'index, reconsidérez le fait que le type représente ou non un magasin de données logique. S'il ne représente pas un magasin de données logique, utilisez une méthode.
Comment corriger les violations
Pour corriger une violation de cette règle, changez l'index en un type entier ou un type de chaîne, ou utilisez une méthode au lieu de l'indexeur.
Quand supprimer les avertissements
Supprimez un avertissement de cette règle uniquement après avoir soigneusement envisagé la nécessité de l'indexeur non standard.
Exemple
L'exemple suivant présente un indexeur qui utilise un index Int32.
Imports System
Namespace DesignLibrary
Public Class Months
Private month() As String = {"Jan", "Feb", "..."}
Default ReadOnly Property Item(index As Integer) As String
Get
Return month(index)
End Get
End Property
End Class
End Namespace
using System;
namespace DesignLibrary
{
public class Months
{
string[] month = new string[] {"Jan", "Feb", "..."};
public string this[int index]
{
get
{
return month[index];
}
}
}
}
using namespace System;
namespace DesignLibrary
{
public ref class Months
{
array<String^>^ month;
public:
property String^ default[int]
{
String^ get(int index)
{
return month[index];
}
void set(int index, String^ value)
{
month[index] = value;
}
}
Months()
{
month = gcnew array<String^>(12);
month[0] = "Jan";
month[1] = "Feb";
//...;
}
};
}
Règles connexes
CA1023 : Les indexeurs ne doivent pas être multidimensionnels