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