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