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
- httpstaticobjectscollection.cs
- OleDbParameter.cs
- Matrix3DConverter.cs
- DispatcherEventArgs.cs
- DictionaryManager.cs
- ComponentSerializationService.cs
- SQLInt32.cs
- IRCollection.cs
- MetaModel.cs
- ComboBox.cs
- namescope.cs
- Vector3DIndependentAnimationStorage.cs
- TemplateKeyConverter.cs
- SmtpSection.cs
- EntityDataSourceContainerNameConverter.cs
- CodeTypeParameterCollection.cs
- DesignerActionGlyph.cs
- Popup.cs
- StateWorkerRequest.cs
- ProxyBuilder.cs
- AssemblyName.cs
- EntityStoreSchemaFilterEntry.cs
- TextRenderer.cs
- Int64Converter.cs
- LineInfo.cs
- HtmlInputRadioButton.cs
- AsymmetricSignatureFormatter.cs
- SessionParameter.cs
- ConfigurationManagerInternalFactory.cs
- GPPOINT.cs
- GiveFeedbackEventArgs.cs
- CultureMapper.cs
- ImageField.cs
- TaskFileService.cs
- WebPartEditorApplyVerb.cs
- AttributeSetAction.cs
- GridViewColumnHeaderAutomationPeer.cs
- AdRotatorDesigner.cs
- VectorAnimationBase.cs
- Config.cs
- DataSetUtil.cs
- SecurityState.cs
- SelectionChangedEventArgs.cs
- AssertSection.cs
- ImagingCache.cs
- DataGridHeaderBorder.cs
- MenuItemStyle.cs
- ListBoxItemWrapperAutomationPeer.cs
- _SslStream.cs
- BlurEffect.cs
- CssClassPropertyAttribute.cs
- ProgressBarHighlightConverter.cs
- ToolStripPanel.cs
- SR.cs
- LoginView.cs
- ErrorHandlerModule.cs
- ExpressionHelper.cs
- ChtmlCalendarAdapter.cs
- LockRenewalTask.cs
- StrongNameIdentityPermission.cs
- DataGridItemCollection.cs
- LoginName.cs
- StylusPlugin.cs
- XmlSerializerNamespaces.cs
- RootBuilder.cs
- Configuration.cs
- _CookieModule.cs
- BaseInfoTable.cs
- KeyGesture.cs
- Cloud.cs
- ButtonColumn.cs
- ProgressBar.cs
- OdbcCommandBuilder.cs
- StreamHelper.cs
- TreeChangeInfo.cs
- AuthorizationSection.cs
- SHA256.cs
- CompensationHandlingFilter.cs
- WindowProviderWrapper.cs
- webclient.cs
- HttpHeaderCollection.cs
- XmlnsCompatibleWithAttribute.cs
- SelectionHighlightInfo.cs
- CharUnicodeInfo.cs
- Update.cs
- SqlConnectionPoolProviderInfo.cs
- SemanticBasicElement.cs
- SessionEndedEventArgs.cs
- CapabilitiesRule.cs
- MouseButton.cs
- WebPartVerbsEventArgs.cs
- CapabilitiesSection.cs
- WorkflowServiceOperationListItem.cs
- EdgeModeValidation.cs
- XPathAxisIterator.cs
- WindowsStreamSecurityUpgradeProvider.cs
- ReadOnlyNameValueCollection.cs
- MatrixAnimationUsingPath.cs
- WebPartConnectionsCancelEventArgs.cs
- HttpCacheParams.cs