这可以替换为ForEach或IEnumrable吗
IAFormApp formApp = new AFormAppClass();
IFields myFields = (IFields)formApp.Fields;
IEnumerator myEnumerator = myFields.GetEnumerator();
while (myEnumerator.MoveNext())
{
IField myField = (IField)myEnumerator.Current;
}
myEnumerator.MoveNext()
没有按顺序遍历我的 PDF 字段。
我不熟悉Adobe SDK API。但我认为你比你想象的更接近。似乎IFields
是从IEnumerable
或IEnumerable<IField>
派生出来的。
在 C# 中,可以使用 foreach 循环访问集合。
例如:
IAFormApp formApp = new AFormAppClass();
IFields myFields = (IFields)formApp.Fields;
foreach(IField field in myFields)
{
// do something with the field
}
在后台,foreach
使用IEnumerable.GetEnumerator()
或泛型IEnumerable<T>.GetEnumerator()
来循环访问集合中的元素。上述方法GetEnumerator()
分别返回一个IEnumerator
IEnumerator<T>
。
您需要检查IFields
的来源。如果它派生自IEnumerable<IField>
,则可以使用上面的示例。如果它派生自IEnumerable
,则需要将对象转换为所需的对象类型,因为IEnumerator.Current
返回一个对象。
有关使用IEnumerable
或泛型形式IEnumerable<T>
的更多信息,请参见 C# 编程指南。