Aracılığıyla paylaş


CA1043: Dizin oluşturucular için tamsayı veya dize bağımsız değişkeni kullanın

TypeName

UseIntegralOrStringArgumentForIndexers

CheckId

CA1043

Kategori

Microsoft.Design

Değişiklik kesiliyor

Bölme

Neden

Dizin türü dışında kullandığı ortak veya korumalı bir dizinleyici ortak veya korumalı türü içeren Int32, Int64, Object, veya String.

Kural Tanımı

Dizinleyiciler, diğer bir deyişle, dizinlenmiş özelliklerin tamsayı veya dize türleri için dizin kullanmanız gerekir.Bu tür veri yapıları dizinleme için genelde kullanılan ve kitaplık kullanılabilirliğini artırmak.Kullanımı Object türü için burada belirli bir tamsayı veya dize türü belirtilemez tasarım zamanında bu gibi durumlarda sınırlı olmalıdır.Tasarım diğer türleri için dizin gerektiriyorsa, mantıksal veri deposu türünü gösterir olup olmadığını dağıttığınızı yeniden gözden.Mantıksal veri deposu temsil etmez, bir yöntem kullanın.

İhlalleri düzeltmek nasıl

Bu kuralı ihlal düzeltmek için bir tamsayı veya dize türü bir dizini değiştirmek veya bir yöntem yerine Dizin Oluşturucu kullanın.

Uyarıları ne zaman

Standart olmayan dizinleyici gereksinimini dikkatlice düşünmeden sonra yalnızca bu kuraldan uyarı göstermez.

Örnek

Aşağıdaki örnek, kullanan bir dizinleyici gösterir bir Int32 dizin.

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

İlgili kuralları

CA1023: Dizin oluşturucular çok boyutlu olmamalıdır

CA1024: Uygun yerlerde özellikler kullan