Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / CompMod / System / Collections / Generic / Stack.cs / 1305376 / Stack.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================================== ** ** Class: Stack ** ** Purpose: An array implementation of a generic stack. ** ** Date: January 28, 2003 ** =============================================================================*/ namespace System.Collections.Generic { using System; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Security.Permissions; // A simple stack of objects. Internally it is implemented as an array, // so Push can be O(n). Pop is O(1). [DebuggerTypeProxy(typeof(System_StackDebugView<>))] [DebuggerDisplay("Count = {Count}")] #if !SILVERLIGHT [Serializable()] #endif [System.Runtime.InteropServices.ComVisible(false)] public class Stack: IEnumerable , System.Collections.ICollection { private T[] _array; // Storage for stack elements private int _size; // Number of items in the stack. private int _version; // Used to keep enumerator in [....] w/ collection. #if !SILVERLIGHT [NonSerialized] #endif private Object _syncRoot; private const int _defaultCapacity = 4; static T[] _emptyArray = new T[0]; /// public Stack() { _array = _emptyArray; _size = 0; _version = 0; } // Create a stack with a specific initial capacity. The initial capacity // must be a non-negative number. /// public Stack(int capacity) { if (capacity < 0) ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.capacity, ExceptionResource.ArgumentOutOfRange_NeedNonNegNumRequired); _array = new T[capacity]; _size = 0; _version = 0; } // Fills a Stack with the contents of a particular collection. The items are // pushed onto the stack in the same order they are read by the enumerator. // /// public Stack(IEnumerable collection) { if (collection==null) ThrowHelper.ThrowArgumentNullException(ExceptionArgument.collection); ICollection c = collection as ICollection ; if( c != null) { int count = c.Count; _array = new T[count]; c.CopyTo(_array, 0); _size = count; } else { _size = 0; _array = new T[_defaultCapacity]; using(IEnumerator en = collection.GetEnumerator()) { while(en.MoveNext()) { Push(en.Current); } } } } /// public int Count { get { return _size; } } /// bool System.Collections.ICollection.IsSynchronized { get { return false; } } /// Object System.Collections.ICollection.SyncRoot { get { if( _syncRoot == null) { System.Threading.Interlocked.CompareExchange
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ProxyAttribute.cs
- BoundField.cs
- RealizationContext.cs
- SiteMap.cs
- UnmanagedHandle.cs
- ProtocolsSection.cs
- LineServicesCallbacks.cs
- IntellisenseTextBox.cs
- FormViewDeletedEventArgs.cs
- MatchAttribute.cs
- ProjectionPruner.cs
- Monitor.cs
- SingletonConnectionReader.cs
- RadioButtonFlatAdapter.cs
- StringWriter.cs
- GetWinFXPath.cs
- Matrix3DConverter.cs
- ErrorFormatterPage.cs
- SizeLimitedCache.cs
- TransactionScopeDesigner.cs
- HMAC.cs
- _NegoStream.cs
- UriSection.cs
- StylusButton.cs
- XmlNamespaceManager.cs
- TableLayoutPanelDesigner.cs
- SchemaHelper.cs
- DelegatingTypeDescriptionProvider.cs
- CacheAxisQuery.cs
- TreeWalkHelper.cs
- BrowserCapabilitiesFactory.cs
- XmlUrlResolver.cs
- TakeOrSkipWhileQueryOperator.cs
- WorkflowMarkupSerializationException.cs
- ListViewSortEventArgs.cs
- TextDecorationCollectionConverter.cs
- GetPageNumberCompletedEventArgs.cs
- HostingEnvironmentException.cs
- MemberRelationshipService.cs
- PartitionedDataSource.cs
- x509utils.cs
- NotifyParentPropertyAttribute.cs
- PermissionAttributes.cs
- BidPrivateBase.cs
- BuildManager.cs
- InheritedPropertyChangedEventArgs.cs
- DateTimeHelper.cs
- MethodExecutor.cs
- ManipulationBoundaryFeedbackEventArgs.cs
- InkPresenterAutomationPeer.cs
- ToolStripDropDownButton.cs
- StoreAnnotationsMap.cs
- DataGridViewRowHeaderCell.cs
- HandlerFactoryWrapper.cs
- RegexReplacement.cs
- WebBrowserHelper.cs
- WebZone.cs
- XmlSchemaSimpleContentRestriction.cs
- PeerNameRecordCollection.cs
- SBCSCodePageEncoding.cs
- UrlUtility.cs
- ExtendedPropertyDescriptor.cs
- StorageConditionPropertyMapping.cs
- SafeHandles.cs
- XmlSchemaComplexContentRestriction.cs
- MonthChangedEventArgs.cs
- PictureBox.cs
- HierarchicalDataSourceDesigner.cs
- WorkflowTransactionOptions.cs
- ExpressionValueEditor.cs
- MD5CryptoServiceProvider.cs
- DefinitionBase.cs
- WindowsBrush.cs
- ResizeBehavior.cs
- CommandBinding.cs
- ResourceDescriptionAttribute.cs
- ApplicationDirectory.cs
- LifetimeServices.cs
- Select.cs
- ListenerElementsCollection.cs
- DataMemberFieldEditor.cs
- TransportManager.cs
- MaskedTextBox.cs
- DateTimeValueSerializerContext.cs
- TextTreeRootTextBlock.cs
- TemplateColumn.cs
- CustomValidator.cs
- SqlDataSourceCache.cs
- SchemaReference.cs
- Int32Rect.cs
- PresentationAppDomainManager.cs
- ContentType.cs
- QueryResponse.cs
- ProcessMonitor.cs
- CapabilitiesAssignment.cs
- ProfileSection.cs
- VirtualPath.cs
- DateTimeUtil.cs
- Focus.cs
- Hash.cs