Udostępnij za pośrednictwem


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