Aracılığıyla paylaş


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

CA1024: Uygun yerlerde özellikler kullan