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
- _LoggingObject.cs
- DateTimeFormatInfoScanner.cs
- SkinBuilder.cs
- WebColorConverter.cs
- XPathNodePointer.cs
- _SslStream.cs
- DataListItemCollection.cs
- ThaiBuddhistCalendar.cs
- SimpleWorkerRequest.cs
- SrgsText.cs
- MouseWheelEventArgs.cs
- SimpleTypeResolver.cs
- GridViewEditEventArgs.cs
- ProviderUtil.cs
- TypeCacheManager.cs
- DrawingVisual.cs
- DefinitionUpdate.cs
- SetStoryboardSpeedRatio.cs
- BackStopAuthenticationModule.cs
- CodeThrowExceptionStatement.cs
- UIElement.cs
- TreeIterator.cs
- UpdatePanel.cs
- MethodRental.cs
- SortDescription.cs
- DesignerCategoryAttribute.cs
- EventLogRecord.cs
- ErrorFormatter.cs
- ArrayList.cs
- RewritingValidator.cs
- Validator.cs
- CategoryEditor.cs
- WhileDesigner.xaml.cs
- FacetChecker.cs
- userdatakeys.cs
- ProcessThread.cs
- RoutedEventArgs.cs
- RSAPKCS1KeyExchangeFormatter.cs
- UnsafeNativeMethods.cs
- MeshGeometry3D.cs
- TraceUtils.cs
- AppDomainProtocolHandler.cs
- FormParameter.cs
- StickyNote.cs
- ConfigurationValidatorBase.cs
- AlphabeticalEnumConverter.cs
- ApplicationFileParser.cs
- InstancePersistence.cs
- DiscoveryClientRequestChannel.cs
- GridViewCommandEventArgs.cs
- JoinCqlBlock.cs
- OleDbCommandBuilder.cs
- ConfigurationFileMap.cs
- HMAC.cs
- CursorConverter.cs
- ProfileService.cs
- DataContractSet.cs
- TimeSpan.cs
- AnchoredBlock.cs
- UIPermission.cs
- SqlVersion.cs
- WebZone.cs
- TextEditorContextMenu.cs
- AmbientValueAttribute.cs
- DurableEnlistmentState.cs
- XmlNamedNodeMap.cs
- XhtmlBasicFormAdapter.cs
- InstanceBehavior.cs
- DispatchChannelSink.cs
- SmtpFailedRecipientException.cs
- DummyDataSource.cs
- NativeMsmqMessage.cs
- IdentifierService.cs
- ExpressionVisitor.cs
- ViewBox.cs
- Ports.cs
- StorageEntityTypeMapping.cs
- RuntimeConfig.cs
- Themes.cs
- DebuggerAttributes.cs
- KerberosRequestorSecurityTokenAuthenticator.cs
- AssemblyInfo.cs
- FileVersionInfo.cs
- AppliedDeviceFiltersDialog.cs
- JsonFormatReaderGenerator.cs
- XmlSchemaSimpleContentRestriction.cs
- FunctionDetailsReader.cs
- NavigateEvent.cs
- SimplePropertyEntry.cs
- HitTestParameters3D.cs
- WebServiceTypeData.cs
- EntitySetDataBindingList.cs
- RectangleHotSpot.cs
- BitmapEffectGroup.cs
- ViewGenerator.cs
- MappingItemCollection.cs
- DBDataPermission.cs
- JsonXmlDataContract.cs
- Size.cs
- MarshalDirectiveException.cs