CA1023: インデクサーを多次元にすることはできません
Item | [値] |
---|---|
規則 ID | CA1023 |
カテゴリ | Microsoft.Design |
互換性に影響する変更点 | あり |
原因
パブリックまたはプロテクト型に、複数のインデックスを使用するパブリック インデクサーまたはプロテクト インデクサーが含まれています。
規則の説明
インデクサー (つまり、インデックス付きのプロパティ) では、インデックスを 1 つだけ使用します。 多次元のインデクサーがあると、ライブラリの操作性が著しく低下することがあります。 設計上、複数のインデクサーが必要になる場合、型が論理的なデータ ストアを表すかどうかを再検討してください。 そうでない場合は、メソッドを使用します。
違反の修正方法
この規則の違反を修正するには、整数型または文字列型の単独インデックスを使用するように設計を変更するか、インデクサーの代わりにメソッドを使用します。
どのようなときに警告を抑制するか
標準ではないインデクサーの必要性を慎重に検討した後でのみ、この規則からの警告を非表示にしてください。
例
次の例は、規則に違反する多次元インデクサーを持つ型 DayOfWeek03
を示しています。 インデクサーは変換の一種と見なすことができるため、メソッドとして公開される方が適切です。 この型は、規則を満たすように RedesignedDayOfWeek03
で再設計されています。
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];
}
}
}
関連規則
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示