CA1043: Použijte celočíselný nebo řetězcový argument pro indexery
Název_typu |
UseIntegralOrStringArgumentForIndexers |
CheckId |
CA1043 |
Kategorie |
Microsoft.design |
Změnit rozdělení |
Rozdělení |
Příčina
Typ veřejné nebo chráněné obsahuje veřejné nebo chráněné indexer používající jiné než typu indexu Int32, Int64, Object, nebo String.
Popis pravidla
Indexování, indexovaných vlastností používejte pro index typu celé číslo nebo řetězec.Tyto typy se obvykle používají pro indexování datových struktur a zvýšení použitelnosti knihovny.Použít Object typu by měla být omezena na případy, kdy nelze zadat typ celé číslo nebo řetězec v době návrhu.Jestliže návrh vyžaduje další typy indexu, zvážit, zda typ představuje logické datové úložiště.Pokud nepředstavuje logické datové úložiště, použijte metodu.
Jak opravit porušení
Oprava porušení tohoto pravidla, změňte index typu celé číslo nebo řetězec nebo použít metodu namísto službu indexování.
Při potlačení upozornění
Potlačit varování od tohoto pravidla pouze po pečlivě berouc v úvahu potřebu nestandardní indexovací člen.
Příklad
Následující příklad ukazuje indexovacího členu, který používá Int32 indexu.
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";
//...;
}
};
}