Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Collections / Stack.cs / 1305376 / Stack.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================================== ** ** Class: Stack ** **[....] ** ** Purpose: An array implementation of a stack. ** ** =============================================================================*/ namespace System.Collections { using System; using System.Security.Permissions; using System.Diagnostics; using System.Diagnostics.Contracts; // 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.Collections.Stack.StackDebugView))] [DebuggerDisplay("Count = {Count}")] [System.Runtime.InteropServices.ComVisible(true)] [Serializable] public class Stack : ICollection, ICloneable { private Object[] _array; // Storage for stack elements [ContractPublicPropertyName("Count")] private int _size; // Number of items in the stack. private int _version; // Used to keep enumerator in [....] w/ collection. [NonSerialized] private Object _syncRoot; private const int _defaultCapacity = 10; public Stack() { _array = new Object[_defaultCapacity]; _size = 0; _version = 0; } // Create a stack with a specific initial capacity. The initial capacity // must be a non-negative number. public Stack(int initialCapacity) { if (initialCapacity < 0) throw new ArgumentOutOfRangeException("initialCapacity", Environment.GetResourceString("ArgumentOutOfRange_NeedNonNegNum")); Contract.EndContractBlock(); if (initialCapacity < _defaultCapacity) initialCapacity = _defaultCapacity; // Simplify doubling logic in Push. _array = new Object[initialCapacity]; _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(ICollection col) : this((col==null ? 32 : col.Count)) { if (col==null) throw new ArgumentNullException("col"); Contract.EndContractBlock(); IEnumerator en = col.GetEnumerator(); while(en.MoveNext()) Push(en.Current); } public virtual int Count { get { Contract.Ensures(Contract.Result() >= 0); return _size; } } public virtual bool IsSynchronized { get { return false; } } public virtual Object 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
- SqlDependency.cs
- Group.cs
- ImpersonationContext.cs
- WebPartVerb.cs
- MethodResolver.cs
- BooleanConverter.cs
- SystemColorTracker.cs
- FocusManager.cs
- KnownTypes.cs
- IndexExpression.cs
- SqlReorderer.cs
- HTMLTextWriter.cs
- TraceContextEventArgs.cs
- ProcessRequestArgs.cs
- RequiredAttributeAttribute.cs
- EmptyStringExpandableObjectConverter.cs
- DataGridViewCellLinkedList.cs
- HtmlInputSubmit.cs
- Bold.cs
- DbProviderFactory.cs
- CharEnumerator.cs
- RequiredFieldValidator.cs
- CodeDelegateCreateExpression.cs
- MemberAssignment.cs
- BrushValueSerializer.cs
- DataSource.cs
- ExistsInCollection.cs
- DatePickerAutomationPeer.cs
- UnmanagedBitmapWrapper.cs
- BindableTemplateBuilder.cs
- DataGridViewImageCell.cs
- _NestedMultipleAsyncResult.cs
- ComponentConverter.cs
- _Events.cs
- FileSecurity.cs
- DescendantOverDescendantQuery.cs
- MimeMapping.cs
- ClassHandlersStore.cs
- EnvironmentPermission.cs
- WorkerRequest.cs
- Size.cs
- CodeTypeDelegate.cs
- FormsAuthenticationUserCollection.cs
- ObjectDataSourceEventArgs.cs
- MailSettingsSection.cs
- Interlocked.cs
- IdentityReference.cs
- DbConnectionPool.cs
- LogConverter.cs
- GridViewSelectEventArgs.cs
- OrderByLifter.cs
- XmlDataSourceNodeDescriptor.cs
- EvidenceBase.cs
- XsltQilFactory.cs
- WebPartConnectionsCancelVerb.cs
- OracleSqlParser.cs
- TabRenderer.cs
- RequestCachePolicyConverter.cs
- ConfigXmlElement.cs
- DescriptionCreator.cs
- LocatorBase.cs
- StringToken.cs
- mediaeventshelper.cs
- AccessorTable.cs
- HttpModuleAction.cs
- Psha1DerivedKeyGenerator.cs
- HotSpotCollectionEditor.cs
- AsymmetricKeyExchangeDeformatter.cs
- CodeDefaultValueExpression.cs
- ConfigurationPermission.cs
- OleDbStruct.cs
- PageAdapter.cs
- ContractInferenceHelper.cs
- ManipulationVelocities.cs
- MenuScrollingVisibilityConverter.cs
- PolyLineSegmentFigureLogic.cs
- DbProviderSpecificTypePropertyAttribute.cs
- RewritingProcessor.cs
- SoapEnvelopeProcessingElement.cs
- IgnoreSectionHandler.cs
- PolicyStatement.cs
- DrawListViewItemEventArgs.cs
- DbDataReader.cs
- HwndSourceKeyboardInputSite.cs
- ZipIOExtraField.cs
- CompiledRegexRunnerFactory.cs
- ActivityCodeDomSerializationManager.cs
- HandlerBase.cs
- AppSettingsExpressionBuilder.cs
- XmlCodeExporter.cs
- EdmRelationshipRoleAttribute.cs
- OperationParameterInfoCollection.cs
- ItemContainerPattern.cs
- MasterPageBuildProvider.cs
- RegisteredHiddenField.cs
- SmiRequestExecutor.cs
- ThreadStartException.cs
- ManagedWndProcTracker.cs
- CheckBox.cs
- ApplicationInfo.cs