CA1043 : Utiliser un argument de chaîne ou intégral pour les indexeursCA1043: Use integral or string argument for indexers

TypeNameTypeName UseIntegralOrStringArgumentForIndexersUseIntegralOrStringArgumentForIndexers
CheckIdCheckId CA1043CA1043
CategoryCategory Microsoft.DesignMicrosoft.Design
Modification avec ruptureBreaking Change RuptureBreaking

CauseCause

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.A public or protected type contains a public or protected indexer that uses an index type other than System.Int32, System.Int64, System.Object, or System.String.

Description de la règleRule Description

Indexeurs, c'est-à-dire les propriétés indexées, doivent utiliser des types entier ou chaîne pour l’index.Indexers, that is, indexed properties, should use integer or string types for the 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.These types are typically used for indexing data structures and increase the usability of the library. Utilisation de la Object type doit se restreindre aux cas où le type entier ou une chaîne spécifique ne peut pas être spécifié au moment du design.Use of the Object type should be restricted to those cases where the specific integer or string type cannot be specified at design time. Si la conception nécessite d’autres types de l’index, reconsidérez si le type représente une banque de données logique.If the design requires other types for the index, reconsider whether the type represents a logical data store. Si elle ne représente pas un magasin de données logique, utilisez une méthode.If it does not represent a logical data store, use a method.

Comment corriger les violationsHow to Fix Violations

Pour corriger une violation de cette règle, modifiez l’index à un type entier ou chaîne, ou utilisez une méthode au lieu de l’indexeur.To fix a violation of this rule, change the index to an integer or string type, or use a method instead of the indexer.

Quand supprimer les avertissementsWhen to Suppress Warnings

Supprimez un avertissement de cette règle uniquement après avoir soigneusement la nécessité de l’indexeur non standard.Suppress a warning from this rule only after carefully considering the need for the nonstandard indexer.

ExempleExample

L’exemple suivant montre un indexeur qui utilise un Int32 index.The following example shows an indexer that uses an Int32 index.

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";
            //...;
        }
    };
}
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

CA1023 : Les indexeurs ne doivent pas être multidimensionnelsCA1023: Indexers should not be multidimensional

CA1024 : Utilisez des propriétés quand c’est appropriéCA1024: Use properties where appropriate