Sdílet prostřednictvím


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

Souvisejících pravidel

CA1023: Indexery by neměly být multidimenzionální

CA1024: Použijte vlastnosti, kde je to vhodné