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
- MissingManifestResourceException.cs
- CodeSnippetTypeMember.cs
- IntPtr.cs
- XsltCompileContext.cs
- DateTimeSerializationSection.cs
- SessionIDManager.cs
- SiteMapPathDesigner.cs
- TracingConnectionListener.cs
- HttpApplicationFactory.cs
- Size3DValueSerializer.cs
- WindowsRichEdit.cs
- FontEmbeddingManager.cs
- DataGridViewAccessibleObject.cs
- HttpDigestClientElement.cs
- TreeNodeConverter.cs
- SafeReversePInvokeHandle.cs
- ConfigXmlSignificantWhitespace.cs
- ObjectParameterCollection.cs
- IsolatedStorageFileStream.cs
- ISAPIApplicationHost.cs
- UpdateProgress.cs
- QilScopedVisitor.cs
- DispatchChannelSink.cs
- LongValidatorAttribute.cs
- DataSvcMapFileSerializer.cs
- OrthographicCamera.cs
- DataSourceCollectionBase.cs
- Parsers.cs
- CheckPair.cs
- DoubleCollectionConverter.cs
- SoapIncludeAttribute.cs
- ComContractElement.cs
- X509Utils.cs
- IssuanceLicense.cs
- ComponentChangingEvent.cs
- DocumentViewer.cs
- UriScheme.cs
- DateRangeEvent.cs
- XmlValueConverter.cs
- ScriptMethodAttribute.cs
- XmlEntityReference.cs
- _TransmitFileOverlappedAsyncResult.cs
- HttpDebugHandler.cs
- TransformCollection.cs
- FontNamesConverter.cs
- IisTraceListener.cs
- JournalEntryListConverter.cs
- PointConverter.cs
- CommonDialog.cs
- AddingNewEventArgs.cs
- WebPartConnectionsConnectVerb.cs
- DeploymentExceptionMapper.cs
- ImageField.cs
- DataGridRowAutomationPeer.cs
- DataGridViewAutoSizeModeEventArgs.cs
- RowsCopiedEventArgs.cs
- SynchronizationContext.cs
- EntityDataSourceMemberPath.cs
- DataGridViewCellLinkedList.cs
- SeekStoryboard.cs
- HttpPostedFile.cs
- DataGridRow.cs
- Label.cs
- AgileSafeNativeMemoryHandle.cs
- TextServicesCompartment.cs
- BrowserCapabilitiesCompiler.cs
- NamedPermissionSet.cs
- TypeViewSchema.cs
- CacheChildrenQuery.cs
- XmlAttributes.cs
- StoreContentChangedEventArgs.cs
- GeometryDrawing.cs
- MatchAttribute.cs
- DataGrid.cs
- BoundConstants.cs
- ThemeDictionaryExtension.cs
- HtmlControl.cs
- HighlightVisual.cs
- ObjectStorage.cs
- ReliableMessagingVersion.cs
- BeginEvent.cs
- AddInPipelineAttributes.cs
- SiteMapHierarchicalDataSourceView.cs
- WebPartDescription.cs
- HelpProvider.cs
- LineServicesRun.cs
- WindowCollection.cs
- LayoutEvent.cs
- FrameworkElement.cs
- DynamicResourceExtensionConverter.cs
- SchemaMerger.cs
- FixedTextContainer.cs
- MailAddressCollection.cs
- CellParaClient.cs
- CharEnumerator.cs
- PointLightBase.cs
- SoapTypeAttribute.cs
- RuntimeEnvironment.cs
- EntityDataSourceWrapperPropertyDescriptor.cs
- x509store.cs