コンパイラ エラー CS0021
角かっこ [] 付きインデックスを 'type' 型の式に適用することはできません
Indexersをサポートしないデータ型に対し、インデクサーによって値にアクセスしようとしました。
C++ アセンブリでインデクサーの使用を試行すると、CS0021 エラーが発生することがあります。 この場合は、既定のインデクサーを C# コンパイラが判別できるように、C++ クラスを DefaultMember
属性で修飾します。 次の例では CS0021 エラーが生成されます。
次の C++ の例は、.dll ファイルにコンパイルされます。 エラーを生成するため、DefaultMember 属性がコメントアウトされていることに注意してください。
// CPP0021.cpp
// compile with: /clr /LD
using namespace System::Reflection;
// Uncomment the following line to resolve
//[DefaultMember("myItem")]
public ref class MyClassMC
{
public:
property int myItem[int]
{
int get(int i){ return 5; }
void set(int i, int value) {}
}
};
.dll ファイルを呼び出す C# の例を次に示します。 これにより、インデクサー経由でクラスへのアクセスが試みられますが、既定のインデクサーとして宣言されたメンバーが存在しないため、エラーが生成されます。 このエラーを解決するには、前の例の .cpp ファイル内の行 [DefaultMember("myItem")]
をコメント解除します。
// CS0021.cs
// compile with: /reference:CPP0021.dll
public class MyClass
{
public static void Main()
{
MyClassMC myMC = new MyClassMC();
int j = myMC[1]; // CS0021
}
}
.NET に関するフィードバック
.NET はオープンソース プロジェクトです。 フィードバックを提供するにはリンクを選択します。