编译器错误 C3287
类型“type”(GetEnumerator 的返回类型)必须具有合适的公共 MoveNext 成员函数和公共 Current 属性
备注
用户定义的集合类必须包含对 MoveNext
和 Current
的定义。
有关详细信息,请参阅 for each, in。
示例
以下示例生成 C3287。
// C3287.cpp
// compile with: /clr
using namespace System;
ref struct R {
bool MoveNext() {
return true;
}
property Object^ Current {
Object^ get() {
Object ^ o = gcnew Object;
return o;
}
}
};
ref struct R2 {
R ^GetEnumerator() {
R^ r = gcnew R;
return r;
}
};
ref struct T {};
ref struct T2 {
T ^GetEnumerator() {
T^ t = gcnew T;
return t;
}
};
int main() {
for each (int i in gcnew T2) {} // C3287
for each (int i in gcnew R2) {} // OK
}