مشاركة عبر


CA1007: Use generics where appropriate

TypeName

IndexersShouldNotBeMultidimensional

CheckId

ca1023

Category

Microsoft.تصميم

تعطيل تغيير

فصل

السبب

يحتوي نوع عامة أو محمية مفهرس عامة أو محمية يستخدم المزيد فهرس.

وصف القاعدة

مفهرسات، التي هو، تتم فهرسة الخصائص، يجب استخدام فهرس مفرد. يمكنك تقليل مفهرسات متعدد الأبعاد مدى الاستفادة المكتبة. reconsider إذا تطلب التصميم فهارس متعددة، سواء نوع يمثل مخزن بيانات منطقية. إذا لم، استخدم أسلوب.

كيف إلى الإصلاح انتهاكات

إلى إصلاحه انتهاكا لهذه قاعدة، قم بتغيير التصميم إلى استخدام فهرس سلسلة أو عدد صحيح lone، أو استخدام أسلوب بدلاً من مفهرس.

عند إلى منع التحذيرات

منع ظهور تحذير من هذه قاعدة فقط بعد عناية الأخذ بعين الاعتبار الحاجة إلى مفهرس غير قياسي.

مثال

يظهر المثال التالي نوع، DayOfWeek03، مع مفهرس متعدد الأبعاد التي تخالف قاعدة. يمكن مشاهدة مفهرس كـ نوع تحويل ولذلك هو أكثر بشكل مناسب كشف كـ أسلوب. النوع هو إعادة تصميم في RedesignedDayOfWeek03ل satهوfy قاعدة.

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];
        }
    };
}

القواعد ذات الصلة

المفوضون must يربط إلى وظائف مع consistent الشفافية Comparing the بيانات of الثاني Databases

ca1024: استخدم خصائص مكان مناسب