CachedDataItemEnumerator クラス (2007 System)
更新 : 2007 年 11 月
CachedDataItemCollection を反復処理します。
名前空間 : Microsoft.VisualStudio.Tools.Applications
アセンブリ : Microsoft.VisualStudio.Tools.Applications.ServerDocument.v9.0 (Microsoft.VisualStudio.Tools.Applications.ServerDocument.v9.0.dll 内)
構文
'宣言
<PermissionSetAttribute(SecurityAction.Demand, Name := "FullTrust")> _
Public NotInheritable Class CachedDataItemEnumerator _
Implements IEnumerator(Of CachedDataItem), IDisposable, _
IEnumerator
'使用
Dim instance As CachedDataItemEnumerator
[PermissionSetAttribute(SecurityAction.Demand, Name = "FullTrust")]
public sealed class CachedDataItemEnumerator : IEnumerator<CachedDataItem>,
IDisposable, IEnumerator
解説
Visual Basic と C# には、それぞれ、複雑な列挙子を隠ぺいするステートメントがあります (C# の場合は foreach、Visual Basic の場合は For Each)。列挙子を直接操作するのではなく、使用している言語の適切なステートメントを使用してください。
メモ : |
---|
このクラスは、Microsoft Office Word 2007 および Microsoft Office Excel 2007 のソリューションでのみ使用できます。Word 2003 および Excel 2003 のソリューションにあるキャッシュされたデータにアクセスするには、Visual Studio 2005 Tools for Office Second Edition Runtime の Microsoft.VisualStudio.Tools.Applications.Runtime 名前空間にある CachedDataHostItemEnumerator クラスを使用します。詳細については、「ServerDocument クラスによるサーバー上のドキュメントの管理」を参照してください。 |
列挙子を使用すると、コレクションに含まれているデータを読み取ることができますが、基になっているコレクションを変更することはできません。
初期状態では、列挙子は、コレクションの最初の要素の前に位置付けられます。また、Reset メソッドも、列挙子をこの位置に戻します。列挙子がこの位置にあるとき、Current プロパティを設定すると例外がスローされます。そのため、Current の値を読み取る前に、MoveNext メソッドを呼び出して列挙子をコレクションの最初の要素に進める必要があります。
Current は、MoveNext または Reset のいずれかが呼び出されるまでは、同じオブジェクトを返します。MoveNext を呼び出すと、Current が次の要素に設定されます。
MoveNext がコレクションの末尾を通過すると、列挙子はコレクションの最後の要素の後に配置され、MoveNext は false を返します。列挙子がこの位置にあるとき、それ以降に MoveNext を呼び出した場合も false が返されます。前回 MoveNext を呼び出して false が返された後に Current を呼び出すと、例外がスローされます。Current をコレクションの最初の要素に再び設定するには、Reset を呼び出してから、MoveNext を呼び出します。
列挙子は、対応するコレクションが変更されない限り、有効です。コレクションに要素の追加、変更、削除などの変更が加えられると、列挙子は無効になって再び有効にすることができなくなり、次に MoveNext または Reset が呼び出されたときに InvalidOperationException がスローされます。コレクションが MoveNext と Current の間に変更された場合、Current は、たとえ列挙子が既に無効になっているときでも、設定されている要素を返します。
列挙子はコレクションへの排他アクセス権を持たないため、コレクションの列挙処理は、本質的にはスレッド セーフな処理ではありません。コレクションが同期されている場合でも、他のスレッドがそのコレクションを変更する可能性はあり、そのような状況が発生すると列挙子は例外をスローします。列挙処理を確実にスレッド セーフに行うには、列挙中にコレクションをロックするか、他のスレッドによって行われた変更によってスローされる例外をキャッチします。
継承階層
System.Object
Microsoft.VisualStudio.Tools.Applications.CachedDataItemEnumerator
スレッド セーフ
この型のすべてのパブリック static (Visual Basic では Shared) メンバは、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。