CA1023: Dizin oluşturucular çok boyutlu olmamalıdır
TypeName |
IndexersShouldNotBeMultidimensional |
CheckId |
CA1023 |
Kategori |
Microsoft.Design |
Değişiklik kesiliyor |
Bölme |
Neden
Ortak veya korumalı türü birden fazla dizin kullanan ortak veya korumalı bir dizinleyici içerir.
Kural Tanımı
Dizinleyiciler, diğer bir deyişle, dizinlenmiş özelliklerin tek bir dizini kullanmalısınız.Çok boyutlu dizinleyiciler kitaplığı kullanılabilirliğini önemli ölçüde azaltabilirsiniz.Tasarım birden çok dizin gerektiriyorsa, mantıksal veri deposu türünü gösterir olup olmadığını dağıttığınızı yeniden gözden.Aksi takdirde, bir yöntemi kullanın.
İhlalleri düzeltmek nasıl
Bu kuralı ihlal düzeltmek için lone tamsayı veya dize dizin kullanmak için Tasarım değiştirme veya dizin oluşturucu yerine bir yöntem 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, bir tür gösterir DayOfWeek03, kuralını ihlal eden çok boyutlu bir dizinleyici ile.Dizinleyici dönüştürme türü olarak görülebilir ve bu nedenle daha uygun bir yöntem açıktır.Tür olarak yeniden RedesignedDayOfWeek03 kural karşılamak için.
Imports System
Namespace DesignLibrary
Public Class DayOfWeek03
Private dayOfWeek(,) As String = {{"Wed", "Thu", "..."}, _
{"Sat", "Sun", "..."}}
' ...
Default ReadOnly Property Item(month As Integer, day As Integer) As String
Get
Return dayOfWeek(month - 1, day - 1)
End Get
End Property
End Class
Public Class RedesignedDayOfWeek03
Private dayOfWeek() As String = _
{"Tue", "Wed", "Thu", "Fri", "Sat", "Sun", "Mon"}
Private daysInPreviousMonth() As Integer = _
{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30}
Function GetDayOfWeek(month As Integer, day As Integer) As String
Return dayOfWeek((daysInPreviousMonth(month - 1) + day) Mod 7)
End Function
End Class
End Namespace
using System;
namespace DesignLibrary
{
public class DayOfWeek03
{
string[,] dayOfWeek = {{"Wed", "Thu", "..."},
{"Sat", "Sun", "..."}};
// ...
public string this[int month, int day]
{
get
{
return dayOfWeek[month - 1, day - 1];
}
}
}
public class RedesignedDayOfWeek03
{
string[] dayOfWeek =
{"Tue", "Wed", "Thu", "Fri", "Sat", "Sun", "Mon"};
int[] daysInPreviousMonth =
{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30};
public string GetDayOfWeek(int month, int day)
{
return dayOfWeek[(daysInPreviousMonth[month - 1] + day) % 7];
}
}
}
using namespace System;
namespace DesignLibrary
{
public ref class DayOfWeek03
{
array<String^, 2>^ dayOfWeek;
public:
property String^ default[int, int]
{
String^ get(int month, int day)
{
return dayOfWeek[month - 1, day - 1];
}
}
DayOfWeek03()
{
dayOfWeek = gcnew array<String^, 2>(12, 7);
dayOfWeek[0,0] = "Wed";
dayOfWeek[0,1] = "Thu";
// ...
dayOfWeek[1,0] = "Sat";
dayOfWeek[1,1] = "Sun";
// ...
}
};
public ref class RedesignedDayOfWeek03
{
static array<String^>^ dayOfWeek =
{"Tue", "Wed", "Thu", "Fri", "Sat", "Sun", "Mon"};
static array<int>^ daysInPreviousMonth =
{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30};
public:
String^ GetDayOfWeek(int month, int day)
{
return dayOfWeek[(daysInPreviousMonth[month - 1] + day) % 7];
}
};
}
İlgili kuralları
CA1043: Dizin oluşturucular için tamsayı veya dize bağımsız değişkeni kullanın