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
- SessionEndingCancelEventArgs.cs
- LocalizableAttribute.cs
- CompilerHelpers.cs
- XmlAttributeAttribute.cs
- SqlDataSourceSummaryPanel.cs
- HtmlFormWrapper.cs
- Int32RectConverter.cs
- ByteAnimation.cs
- NameValueFileSectionHandler.cs
- ComplexLine.cs
- DataGridViewCheckBoxColumn.cs
- SqlNotificationEventArgs.cs
- VerificationAttribute.cs
- DrawingGroupDrawingContext.cs
- ScrollViewer.cs
- SupportsPreviewControlAttribute.cs
- _NetworkingPerfCounters.cs
- CodeGroup.cs
- GetWinFXPath.cs
- HttpProfileGroupBase.cs
- _SSPISessionCache.cs
- CustomLineCap.cs
- FixedSOMTableCell.cs
- ScriptDescriptor.cs
- FixedSOMTextRun.cs
- ScriptManager.cs
- TimeIntervalCollection.cs
- VisualBasicExpressionConverter.cs
- CachedPathData.cs
- PackageDigitalSignature.cs
- HtmlTableRowCollection.cs
- GacUtil.cs
- StringHandle.cs
- InplaceBitmapMetadataWriter.cs
- ChangeBlockUndoRecord.cs
- HostTimeoutsElement.cs
- DataViewManagerListItemTypeDescriptor.cs
- ExtensibleClassFactory.cs
- ExpressionBindingsDialog.cs
- ManualResetEvent.cs
- WorkflowDesignerMessageFilter.cs
- HttpContextServiceHost.cs
- _FtpDataStream.cs
- InputDevice.cs
- ConfigXmlDocument.cs
- DoubleAnimation.cs
- ListGeneralPage.cs
- ResourceKey.cs
- MouseEvent.cs
- ArglessEventHandlerProxy.cs
- SchemaImporterExtensionElement.cs
- _SafeNetHandles.cs
- ContentFilePart.cs
- Pkcs7Recipient.cs
- AccessDataSource.cs
- FrameworkContentElement.cs
- PersistenceContextEnlistment.cs
- DataGridViewRowsAddedEventArgs.cs
- DispatchChannelSink.cs
- CompositeTypefaceMetrics.cs
- ErrorRuntimeConfig.cs
- PropertyInformationCollection.cs
- TransformDescriptor.cs
- RoleBoolean.cs
- BamlRecordHelper.cs
- DefaultProxySection.cs
- TextParagraphView.cs
- Regex.cs
- XhtmlTextWriter.cs
- StylusPlugin.cs
- ExpressionPrefixAttribute.cs
- TransformCollection.cs
- EditorPartDesigner.cs
- CustomErrorsSection.cs
- DataTableExtensions.cs
- GlyphRunDrawing.cs
- CapacityStreamGeometryContext.cs
- DataGridViewUtilities.cs
- SchemaDeclBase.cs
- DBSqlParserTableCollection.cs
- XmlDataImplementation.cs
- SchemaElementDecl.cs
- NumericExpr.cs
- MemberDescriptor.cs
- RequestCacheManager.cs
- NonceCache.cs
- DataGridViewCellStyleChangedEventArgs.cs
- BaseAsyncResult.cs
- versioninfo.cs
- TreeNodeBindingCollection.cs
- SchemaElementDecl.cs
- DbResourceAllocator.cs
- _LocalDataStoreMgr.cs
- QueryOptionExpression.cs
- NonVisualControlAttribute.cs
- IPAddressCollection.cs
- ByteStreamGeometryContext.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- TextLineResult.cs
- Compiler.cs