CA1043: Use o argumento integral ou de seqüência de caracteres para indexadores
TypeName |
UseIntegralOrStringArgumentForIndexers |
CheckId |
CA1043 |
<strong>Categoria</strong> |
Microsoft.design |
Alteração significativa |
Quebrando |
Causa
Um tipo de público ou protegido contém um indexador público ou protegido que usa um tipo de índice diferente de System.Int32, System.Int64, System.Object, ou System.String.
Descrição da regra
Os indexadores, isto é, propriedades indexadas, devem usar os tipos de inteiro ou seqüência de caracteres para o índice. Esses tipos são normalmente usados para estruturas de dados de indexação e aumentam a usabilidade da biblioteca. Usar o Object tipo deve ser restrito a esses casos onde o tipo específico de inteiro ou seqüência de caracteres não pode ser especificado em tempo de design. Se o projeto requer outros tipos para o índice, reconsidere se o tipo representa um armazenamento de dados lógicos. Se ele não representa um armazenamento de dados lógicos, use um método.
Como corrigir violações
Para corrigir uma violação desta regra, alterar o índice para um tipo inteiro ou seqüência ou usar um método em vez do indexador.
Quando suprimir avisos
Elimina um aviso esta regra somente após a consideração cuidadosa a necessidade do indexador não padrão.
Exemplo
O exemplo a seguir mostra um indexador que usa um Int32 índice.
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";
//...;
}
};
}