CA1023: Indeksatory nie powinny być wielowymiarowe
TypeName |
IndexersShouldNotBeMultidimensional |
CheckId |
CA1023 |
Kategoria |
Microsoft.Design |
Złamanie zmiany |
Złamanie |
Przyczyna
Typ publicznych lub chronionych zawiera indeksatora publicznych lub chronione, który korzysta z więcej niż jednym indeksie.
Opis reguły
Indeksatory, oznacza to, że właściwości indeksowanych, należy użyć jednego indeksu.Wielowymiarowe indeksatory mogą znacznie zmniejszyć użyteczność biblioteki.Jeśli projekt wymaga wiele indeksów, ponownego rozważenia czy typ reprezentuje magazyn danych logicznych.Jeśli nie, należy użyć metody.
Jak naprawić naruszenia
Aby naprawić naruszenie tej zasady, zmienić projekt lone całkowitą lub indeks ciągu, lub użyto metody zamiast indeksatora.
Kiedy do pomijania ostrzeżenia
Pomija ostrzeżenia od tej zasady tylko po ostrożnie, uwzględniając potrzebę niestandardowych indeksatora.
Przykład
W poniższym przykładzie pokazano typu, DayOfWeek03, z wielowymiarowego indeksatora, naruszające regułę.Indeksatora może być traktowany jako typ konwersji i dlatego bardziej odpowiedni jako metoda narażone.Typ jest przeprojektowane w RedesignedDayOfWeek03 , aby spełnić wymagań reguły.
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];
}
};
}
Zasady pokrewne
CA1043: Dla indeksatorów używaj argumentów integral lub string
CA1024: Używaj właściwości wszędzie, gdzie jest to odpowiednie