Partilhar via


CA1043: usar argumento integral ou da cadeia de caracteres para indexadores

TypeName

UseIntegralOrStringArgumentForIndexers

CheckId

CA1043

Categoria

Microsoft.Design

Alteração Significativa

Quebra

Causa

Um público ou um tipo protegido contêm um público ou um indicador protegido que use um tipo de índice diferente Int32, Int64, Object, ou String.

Descrição da Regra

Os indicadores, ou seja, indexados propriedades, devem usar o inteiro ou em tipos para o índice.Esses tipos são normalmente usados para indexação estruturas de dados e aumentar a usabilidade de biblioteca.O uso do tipo de Object deve ser restrito 2 os casos onde o inteiro ou o tipo específico de cadeia de caracteres não podem ser especificados em tempo de design.Se o design requer outros tipos para o índice, reconsidere se o tipo representa um repositório de dados lógico.Se não representa um repositório de dados lógico, use um método.

Como Corrigir Violações

Para corrigir uma violação desta regra, altere o índice em um inteiro ou um tipo de cadeia de caracteres, ou usar um método em vez do medidor.

Quando Suprimir Alertas

Suprima um aviso desta regra somente depois cuidadosamente a consideração da necessidade do medidor não padrão.

Exemplo

O exemplo a seguir mostra um indicador que usa um índice de 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";
            //...;
        }
    };
}

Regras Relacionadas

CA1023: os indexadores não devem ser multidimensionais

CA1024: usar propriedades quando apropriado