Maya .NET API の多くのクラスに IEnumerable<T>インタフェースが実装されています。一部の例には、MCGeometry、MCDag、MCDependencyGraph などのヘルパー クラスに加えて、MColorArray、MFloatPointArray などのさまざまな Maya 配列クラスも含まれています。IEnumerable<T>を実装しているすべてのクラスを表示するには、オブジェクト ブラウザを使用して GetEnumerator() を検索します。
GetEnumerator() 関数(IEnumerable を実装する関数を含む)を実装し、IEnumerator インタフェースに準拠しているクラスを返す任意のクラスで foreach キーワードを使用できます。たとえば、シーン内で選択したオブジェクトを使用して、次のコードを実行すると、選択したすべてのオブジェクトのパス名が表示されます。
foreach (var s in MGlobal.activeSelectionList) MGlobal.displayInfo(s.partialPathName);
System.Linq ネームスペースを読み込むと、IEnumerable<T>を実装しているすべてのコレクションで LINQ 拡張メソッドを使用できます。たとえば、次のコードでは、選択したすべてのメッシュが返されます。
var meshes = MGlobal.activeSelectionList.Where(p => p.hasFn(MFn.Type.kMesh)).Select(p => new MFnMesh(p));
これは、「メソッド構文」と呼ばれます。LINQ でサポートされるその他の構文は、「クエリー構文」と呼ばれます。次のコードは、前のコードと同じです。
var meshes = from p in MGlobal.activeSelectionList where p.hasFn(MFn.Type.kMesh) select new MFnMesh(p);
その他の LINQ の使用例については、Developer Kit インストールの devkit¥dotnet¥wpfexamples フォルダにある DAGExplorer のサンプルを参照してください。