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
- ThrowOnMultipleAssignment.cs
- CodeDomLoader.cs
- SafeNativeMethods.cs
- RequiredFieldValidator.cs
- ConfigurationElementProperty.cs
- BufferedWebEventProvider.cs
- SelectorItemAutomationPeer.cs
- PreviousTrackingServiceAttribute.cs
- DataGridViewImageCell.cs
- DashStyle.cs
- Scripts.cs
- TextMarkerSource.cs
- XmlCustomFormatter.cs
- CreateUserWizardDesigner.cs
- Translator.cs
- TextRangeEditTables.cs
- PropertyEmitterBase.cs
- CategoriesDocumentFormatter.cs
- GcHandle.cs
- Regex.cs
- BaseParser.cs
- SettingsBase.cs
- ByteStorage.cs
- Matrix3DValueSerializer.cs
- RefreshEventArgs.cs
- TabControlCancelEvent.cs
- BufferedWebEventProvider.cs
- RegisteredHiddenField.cs
- ObjectContext.cs
- WebPartConnectionsEventArgs.cs
- RadioButtonPopupAdapter.cs
- DataSvcMapFileSerializer.cs
- HybridDictionary.cs
- latinshape.cs
- SimpleApplicationHost.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- BinaryCommonClasses.cs
- Bold.cs
- DesignerView.xaml.cs
- LassoSelectionBehavior.cs
- CancellationState.cs
- AvTraceDetails.cs
- ItemsPanelTemplate.cs
- GridView.cs
- SqlFunctions.cs
- Column.cs
- RightsManagementLicense.cs
- RouteTable.cs
- BooleanAnimationBase.cs
- MetaTableHelper.cs
- Trace.cs
- _NegotiateClient.cs
- ArrangedElementCollection.cs
- SamlSubjectStatement.cs
- MenuBindingsEditorForm.cs
- EntityDataSourceEntitySetNameItem.cs
- X509Utils.cs
- PropertyOverridesTypeEditor.cs
- DataRow.cs
- ChangeProcessor.cs
- EngineSiteSapi.cs
- Options.cs
- HwndStylusInputProvider.cs
- CompositeControlDesigner.cs
- DrawingGroup.cs
- InlineCollection.cs
- ReachDocumentReferenceCollectionSerializerAsync.cs
- SmiTypedGetterSetter.cs
- ToolStripManager.cs
- WorkflowDefinitionContext.cs
- DataSpaceManager.cs
- _ProxyChain.cs
- _TLSstream.cs
- AmbientLight.cs
- WebControl.cs
- BitmapCacheBrush.cs
- ActivitySurrogate.cs
- CompositeScriptReference.cs
- Accessible.cs
- complextypematerializer.cs
- WindowsFormsHost.cs
- Rect3D.cs
- ValidationErrorCollection.cs
- ContextStaticAttribute.cs
- CommonObjectSecurity.cs
- TdsParserSessionPool.cs
- RangeBaseAutomationPeer.cs
- Encoder.cs
- _SafeNetHandles.cs
- TextServicesCompartment.cs
- DispatcherHookEventArgs.cs
- ObjectAnimationUsingKeyFrames.cs
- EditorZone.cs
- GenericPrincipal.cs
- MultipleViewPattern.cs
- ActivityTypeResolver.xaml.cs
- ImageCreator.cs
- Debug.cs
- SQLBinaryStorage.cs
- XmlAttributeCollection.cs