Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Shared / MS / Internal / GenericEnumerator.cs / 1305600 / GenericEnumerator.cs
//------------------------------------------------------------------------------ // Microsoft Avalon // Copyright (c) Microsoft Corporation, 2001 // // File: GenericEnumerator.cs //----------------------------------------------------------------------------- using System; using System.Collections; using System.Diagnostics; using System.Windows; using MS.Utility; #if PRESENTATION_CORE using SR=MS.Internal.PresentationCore.SR; using SRID=MS.Internal.PresentationCore.SRID; #else using SR=System.Windows.SR; using SRID=System.Windows.SRID; #endif namespace MS.Internal { ////// GenericEnumerator /// internal class GenericEnumerator : IEnumerator { #region Delegates internal delegate int GetGenerationIDDelegate(); #endregion #region Constructors private GenericEnumerator() { } internal GenericEnumerator(IList array, GetGenerationIDDelegate getGenerationID) { _array = array; _count = _array.Count; _position = -1; _getGenerationID = getGenerationID; _originalGenerationID = _getGenerationID(); } #endregion #region Private private void VerifyCurrent() { if ( (-1 == _position) || (_position >= _count)) { throw new InvalidOperationException(SR.Get(SRID.Enumerator_VerifyContext)); } } #endregion #region IEnumerator ////// Returns the object at the current location of the key times list. /// Use the strongly typed version instead. /// object IEnumerator.Current { get { VerifyCurrent(); return _current; } } ////// Move to the next value in the key times list /// ///true if succeeded, false if at the end of the list public bool MoveNext() { if (_getGenerationID() != _originalGenerationID) { throw new InvalidOperationException(SR.Get(SRID.Enumerator_CollectionChanged)); } _position++; if (_position >= _count) { _position = _count; return false; } else { Debug.Assert(_position >= 0); _current = _array[_position]; return true; } } ////// Move to the position before the first value in the list. /// public void Reset() { if (_getGenerationID() != _originalGenerationID) { throw new InvalidOperationException(SR.Get(SRID.Enumerator_CollectionChanged)); } else { _position = -1; } } #endregion #region Data private IList _array; private object _current; private int _count; private int _position; private int _originalGenerationID; private GetGenerationIDDelegate _getGenerationID; #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WindowsMenu.cs
- WebPartRestoreVerb.cs
- XomlSerializationHelpers.cs
- CodeDomSerializerBase.cs
- CapabilitiesState.cs
- userdatakeys.cs
- DbConnectionOptions.cs
- ObjectListField.cs
- IPPacketInformation.cs
- StyleModeStack.cs
- ProviderSettings.cs
- SqlUserDefinedTypeAttribute.cs
- TabControlAutomationPeer.cs
- XmlConverter.cs
- PropertyGridCommands.cs
- SurrogateChar.cs
- CodeCatchClause.cs
- securitycriticaldataClass.cs
- CssTextWriter.cs
- HttpServerVarsCollection.cs
- NonSerializedAttribute.cs
- COM2PropertyDescriptor.cs
- ComplexObject.cs
- SingleKeyFrameCollection.cs
- DataObjectMethodAttribute.cs
- Operators.cs
- XmlKeywords.cs
- RectAnimation.cs
- DataRecordObjectView.cs
- IPipelineRuntime.cs
- NetworkInterface.cs
- ToolStripSystemRenderer.cs
- ProtocolsSection.cs
- Column.cs
- Message.cs
- StrokeNodeData.cs
- NetworkStream.cs
- StateBag.cs
- CrossSiteScriptingValidation.cs
- path.cs
- ArraySortHelper.cs
- ListenDesigner.cs
- SystemIPv4InterfaceProperties.cs
- ToolStripStatusLabel.cs
- TextElement.cs
- ReferenceEqualityComparer.cs
- GenerateTemporaryTargetAssembly.cs
- TableLayoutRowStyleCollection.cs
- EnlistmentState.cs
- Screen.cs
- UserPersonalizationStateInfo.cs
- IncrementalReadDecoders.cs
- MessageBox.cs
- Constraint.cs
- CoTaskMemSafeHandle.cs
- SystemIPv6InterfaceProperties.cs
- LocationSectionRecord.cs
- MappingItemCollection.cs
- XamlDesignerSerializationManager.cs
- ProfileInfo.cs
- IntegerFacetDescriptionElement.cs
- ObjectRef.cs
- TextServicesManager.cs
- BuildProvider.cs
- SingleAnimation.cs
- XmlSchemaRedefine.cs
- TreeNodeClickEventArgs.cs
- DateBoldEvent.cs
- ErrorHandler.cs
- DataPagerField.cs
- HtmlElement.cs
- DefaultIfEmptyQueryOperator.cs
- OptionUsage.cs
- SafeUserTokenHandle.cs
- PageRequestManager.cs
- DataGridViewCellValueEventArgs.cs
- ItemList.cs
- TextDecorationUnitValidation.cs
- _ShellExpression.cs
- ServerIdentity.cs
- StreamWriter.cs
- PresentationTraceSources.cs
- StylusPointDescription.cs
- mediaeventargs.cs
- InProcStateClientManager.cs
- TrustLevelCollection.cs
- KeyPressEvent.cs
- ServicePointManagerElement.cs
- PresentationAppDomainManager.cs
- COM2Enum.cs
- WinFormsSpinner.cs
- StatusBarItemAutomationPeer.cs
- ReliabilityContractAttribute.cs
- WebPartConnectionCollection.cs
- FontSizeConverter.cs
- DurableInstance.cs
- TypeBuilder.cs
- Int32RectConverter.cs
- SlipBehavior.cs
- ShaperBuffers.cs