Utilize argumento integrais ou de seqüência de caracteres para os indexadores
TypeName |
UseIntegralOrStringArgumentForIndexers |
CheckId |
CA1043 |
Category (Categoria) |
Microsoft.Design |
Quebrando alterar |
Quebrando |
Causa
Um tipo 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 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.Uso do Object o tipo deve ser restrito a esses casos onde o tipo específico de inteiro ou seqüência de caracteres não pode ser especificado ao time de design. Se o projeto requer outros tipos para o índice, reconsidere se o tipo de um armazenamento de dados lógico representa.Se ele não representa um armazenamento de dados lógicos, use um método.
Como corrigir violações
Para corrigir uma violação dessa regra, alterar o índice para um tipo inteiro ou seqüência de caracteres ou usar um método em vez do indexador.
Quando suprimir avisos
Elimina um aviso esta regra somente após considerar cuidadosamente 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";
//...;
}
};
}