Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / System / Linq / Parallel / Enumerables / EmptyEnumerable.cs / 1305376 / EmptyEnumerable.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== // =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ // // EmptyEnumerable.cs // //[....] // // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- using System.Collections; using System.Collections.Generic; namespace System.Linq.Parallel { ////// We occ----ionally need a no-op enumerator to stand-in when we don't have data left /// within a partition's data stream. These are simple enumerable and enumerator /// implementations that always and consistently yield no elements. /// ///internal class EmptyEnumerable : ParallelQuery { private EmptyEnumerable() : base(QuerySettings.Empty) { } // A singleton cached and shared among callers. private static EmptyEnumerable s_instance; private static EmptyEnumerator s_enumeratorInstance; internal static EmptyEnumerable Instance { get { if (s_instance == null) { // There is no need for thread safety here. s_instance = new EmptyEnumerable (); } return s_instance; } } public override IEnumerator GetEnumerator() { if (s_enumeratorInstance == null) { // There is no need for thread safety here. s_enumeratorInstance = new EmptyEnumerator (); } return s_enumeratorInstance; } } internal class EmptyEnumerator : QueryOperatorEnumerator , IEnumerator { internal override bool MoveNext(ref T currentElement, ref int currentKey) { return false; } // IEnumerator methods. public T Current { get { return default(T); } } object IEnumerator.Current { get { return null; } } public bool MoveNext() { return false; } void Collections.IEnumerator.Reset() { } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== // =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ // // EmptyEnumerable.cs // // [....] // // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- using System.Collections; using System.Collections.Generic; namespace System.Linq.Parallel { ////// We occ----ionally need a no-op enumerator to stand-in when we don't have data left /// within a partition's data stream. These are simple enumerable and enumerator /// implementations that always and consistently yield no elements. /// ///internal class EmptyEnumerable : ParallelQuery { private EmptyEnumerable() : base(QuerySettings.Empty) { } // A singleton cached and shared among callers. private static EmptyEnumerable s_instance; private static EmptyEnumerator s_enumeratorInstance; internal static EmptyEnumerable Instance { get { if (s_instance == null) { // There is no need for thread safety here. s_instance = new EmptyEnumerable (); } return s_instance; } } public override IEnumerator GetEnumerator() { if (s_enumeratorInstance == null) { // There is no need for thread safety here. s_enumeratorInstance = new EmptyEnumerator (); } return s_enumeratorInstance; } } internal class EmptyEnumerator : QueryOperatorEnumerator , IEnumerator { internal override bool MoveNext(ref T currentElement, ref int currentKey) { return false; } // IEnumerator methods. public T Current { get { return default(T); } } object IEnumerator.Current { get { return null; } } public bool MoveNext() { return false; } void Collections.IEnumerator.Reset() { } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- MSAAEventDispatcher.cs
- XmlExtensionFunction.cs
- AttachedAnnotationChangedEventArgs.cs
- DerivedKeySecurityTokenStub.cs
- DropShadowBitmapEffect.cs
- DataGridTextBoxColumn.cs
- ExpressionEvaluator.cs
- NativeMethods.cs
- DataGridViewLinkColumn.cs
- RectAnimation.cs
- InstancePersistence.cs
- FormatException.cs
- GridViewRowPresenter.cs
- SupportingTokenProviderSpecification.cs
- WebPartAuthorizationEventArgs.cs
- ConfigurationValidatorBase.cs
- ReachFixedDocumentSerializer.cs
- ClickablePoint.cs
- AvTrace.cs
- Bold.cs
- DelegateSerializationHolder.cs
- PointF.cs
- SharedRuntimeState.cs
- WMIGenerator.cs
- SchemaNotation.cs
- WebPartConnectionsConfigureVerb.cs
- StylusButton.cs
- XmlChoiceIdentifierAttribute.cs
- ConstructorExpr.cs
- ScrollableControl.cs
- NavigatorInput.cs
- OdbcConnectionString.cs
- LinqDataSource.cs
- WebBrowserDocumentCompletedEventHandler.cs
- SymbolTable.cs
- SqlProviderManifest.cs
- SqlCommandSet.cs
- NavigationFailedEventArgs.cs
- Qualifier.cs
- EntityDataSourceWizardForm.cs
- ClientApiGenerator.cs
- CodeDelegateCreateExpression.cs
- TextServicesContext.cs
- TabItem.cs
- ApplicationSecurityManager.cs
- filewebrequest.cs
- SessionPageStateSection.cs
- DataGridState.cs
- OperandQuery.cs
- WebPartConnectionsCancelVerb.cs
- CacheSection.cs
- WebPartEditorOkVerb.cs
- Clipboard.cs
- TableItemPattern.cs
- HTMLTextWriter.cs
- UnmanagedMarshal.cs
- MulticastOption.cs
- StringCollectionMarkupSerializer.cs
- SynchronizationFilter.cs
- TextEffect.cs
- DataKey.cs
- StylusPlugin.cs
- templategroup.cs
- ModulesEntry.cs
- HtmlInputFile.cs
- QueryOperator.cs
- OrderedDictionary.cs
- DiscoveryOperationContextExtension.cs
- AuthorizationRule.cs
- ContentPresenter.cs
- FormViewInsertedEventArgs.cs
- WeakReference.cs
- CodeMethodReturnStatement.cs
- SimpleHandlerBuildProvider.cs
- CqlWriter.cs
- Maps.cs
- XamlSerializationHelper.cs
- LexicalChunk.cs
- SortKey.cs
- InvalidOperationException.cs
- MemberBinding.cs
- XmlCodeExporter.cs
- DiffuseMaterial.cs
- RichTextBoxContextMenu.cs
- SqlDataSourceView.cs
- XmlCompatibilityReader.cs
- FontFaceLayoutInfo.cs
- XmlAttributeCache.cs
- Context.cs
- TextServicesProperty.cs
- ImageFormat.cs
- RadioButton.cs
- EntityCommand.cs
- MouseWheelEventArgs.cs
- RuleSettings.cs
- NullableBoolConverter.cs
- InputBinding.cs
- CodeSnippetExpression.cs
- SrgsToken.cs
- DomainUpDown.cs