1. ホーム
  2. c#

[解決済み] C# で 'System.Array' 型の式に [] を使ったインデックスを適用することができない

2022-01-31 08:03:52

質問

文字列配列を含むListを使用しようとしていますが、角括弧を使用して配列要素にアクセスしようとすると、エラーが発生します。

私の配列のリストは、このように宣言されています。

public List<Array> alphabet = new List<Array>();

また、このように文字列の配列を宣言しています。

 string[] encrypted = new string[text.Length];

一方の配列にはアクセスできますが、もう一方の配列にはアクセスできません。

string a = alphabet[1][2]; // this gives me an error

string b = encrypted[1]; // this works fine

解決方法は?

エラーは非常に簡単です。 Array . Array クラスはすべての配列タイプの基本クラスであり、配列は 暗黙のうちに はArrayを継承しています。しかし Array 自体はインデクサを持ちません。以下は、あなたのエラーのデモンストレーションです。

int[] numbers = new[] {1, 2, 3, 4, 5};

numbers[2] = 11; // Okay

Array arr = numbers as Array;

arr[2] = 11; // ERROR!

ですから、インデクサを使いたい場合は、要素タイプを例えば何かの配列に変更します。

public List<string[]> alphabet = new List<string[]>();