Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Collections / ObjectModel / Collection.cs / 1305376 / Collection.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== //[....] // namespace System.Collections.ObjectModel { using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Runtime; [Serializable] [System.Runtime.InteropServices.ComVisible(false)] [DebuggerTypeProxy(typeof(Mscorlib_CollectionDebugView<>))] [DebuggerDisplay("Count = {Count}")] public class Collection: IList , IList { IList items; [NonSerialized] private Object _syncRoot; #if !FEATURE_CORECLR [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] #endif public Collection() { items = new List (); } public Collection(IList list) { if (list == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.list); } items = list; } public int Count { #if !FEATURE_CORECLR [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] #endif get { return items.Count; } } protected IList Items { get { return items; } } public T this[int index] { #if !FEATURE_CORECLR [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] #endif get { return items[index]; } set { if( items.IsReadOnly) { ThrowHelper.ThrowNotSupportedException(ExceptionResource.NotSupported_ReadOnlyCollection); } if (index < 0 || index >= items.Count) { ThrowHelper.ThrowArgumentOutOfRangeException(); } SetItem(index, value); } } public void Add(T item) { if( items.IsReadOnly) { ThrowHelper.ThrowNotSupportedException(ExceptionResource.NotSupported_ReadOnlyCollection); } int index = items.Count; InsertItem(index, item); } #if !FEATURE_CORECLR [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] #endif public void Clear() { if( items.IsReadOnly) { ThrowHelper.ThrowNotSupportedException(ExceptionResource.NotSupported_ReadOnlyCollection); } ClearItems(); } #if !FEATURE_CORECLR [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] #endif public void CopyTo(T[] array, int index) { items.CopyTo(array, index); } #if !FEATURE_CORECLR [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] #endif public bool Contains(T item) { return items.Contains(item); } public IEnumerator GetEnumerator() { return items.GetEnumerator(); } #if !FEATURE_CORECLR [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] #endif public int IndexOf(T item) { return items.IndexOf(item); } public void Insert(int index, T item) { if (items.IsReadOnly) { ThrowHelper.ThrowNotSupportedException(ExceptionResource.NotSupported_ReadOnlyCollection); } if (index < 0 || index > items.Count) { ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.index, ExceptionResource.ArgumentOutOfRange_ListInsert); } InsertItem(index, item); } public bool Remove(T item) { if( items.IsReadOnly) { ThrowHelper.ThrowNotSupportedException(ExceptionResource.NotSupported_ReadOnlyCollection); } int index = items.IndexOf(item); if (index < 0) return false; RemoveItem(index); return true; } public void RemoveAt(int index) { if( items.IsReadOnly) { ThrowHelper.ThrowNotSupportedException(ExceptionResource.NotSupported_ReadOnlyCollection); } if (index < 0 || index >= items.Count) { ThrowHelper.ThrowArgumentOutOfRangeException(); } RemoveItem(index); } #if !FEATURE_CORECLR [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] #endif protected virtual void ClearItems() { items.Clear(); } #if !FEATURE_CORECLR [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] #endif protected virtual void InsertItem(int index, T item) { items.Insert(index, item); } #if !FEATURE_CORECLR [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] #endif protected virtual void RemoveItem(int index) { items.RemoveAt(index); } protected virtual void SetItem(int index, T item) { items[index] = item; } bool ICollection .IsReadOnly { get { return items.IsReadOnly; } } IEnumerator IEnumerable.GetEnumerator() { return ((IEnumerable)items).GetEnumerator(); } bool ICollection.IsSynchronized { get { return false; } } object ICollection.SyncRoot { get { if( _syncRoot == null) { ICollection c = items as ICollection; if( c != null) { _syncRoot = c.SyncRoot; } else { System.Threading.Interlocked.CompareExchange
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SelectionRangeConverter.cs
- MDIWindowDialog.cs
- CommentEmitter.cs
- SeparatorAutomationPeer.cs
- PageCodeDomTreeGenerator.cs
- WorkflowServiceAttributes.cs
- ThreadStartException.cs
- DataColumnMappingCollection.cs
- SingleKeyFrameCollection.cs
- DynamicMethod.cs
- Pkcs7Recipient.cs
- TextBreakpoint.cs
- DbConnectionPoolCounters.cs
- EndOfStreamException.cs
- AlgoModule.cs
- StringFormat.cs
- GenericIdentity.cs
- BitmapCacheBrush.cs
- _OverlappedAsyncResult.cs
- FontWeights.cs
- GregorianCalendarHelper.cs
- CaseInsensitiveHashCodeProvider.cs
- SmtpReplyReaderFactory.cs
- FilterEventArgs.cs
- ZoneButton.cs
- AssociationSetMetadata.cs
- dataprotectionpermission.cs
- SqlTypeSystemProvider.cs
- ErrorHandler.cs
- MessagingActivityHelper.cs
- EpmCustomContentWriterNodeData.cs
- TextTreeObjectNode.cs
- WorkflowRuntimeServiceElementCollection.cs
- XmlSchemaAnnotated.cs
- OptimalBreakSession.cs
- BitVector32.cs
- SoapAttributes.cs
- CheckBoxAutomationPeer.cs
- DataBindingHandlerAttribute.cs
- GlyphInfoList.cs
- CacheVirtualItemsEvent.cs
- TextElementEditingBehaviorAttribute.cs
- bindurihelper.cs
- PublisherMembershipCondition.cs
- DataStorage.cs
- CompositeActivityMarkupSerializer.cs
- InkCanvasSelectionAdorner.cs
- MobileRedirect.cs
- EditorZoneBase.cs
- FirstMatchCodeGroup.cs
- AbstractExpressions.cs
- xmlformatgeneratorstatics.cs
- DeploymentSection.cs
- HttpCachePolicyWrapper.cs
- RegexCapture.cs
- RIPEMD160.cs
- IDataContractSurrogate.cs
- ChildTable.cs
- HttpModule.cs
- WindowsRegion.cs
- FacetDescription.cs
- _FtpControlStream.cs
- ISCIIEncoding.cs
- DataPagerFieldCommandEventArgs.cs
- AppliedDeviceFiltersEditor.cs
- SafeRightsManagementHandle.cs
- RegexTree.cs
- DependencyPropertyKey.cs
- SystemWebExtensionsSectionGroup.cs
- CfgParser.cs
- XPathChildIterator.cs
- CharStorage.cs
- StreamInfo.cs
- ShaperBuffers.cs
- StaticFileHandler.cs
- LocalsItemDescription.cs
- Propagator.JoinPropagator.cs
- SiteMap.cs
- UInt16Storage.cs
- SiteMapPath.cs
- TreeNodeBinding.cs
- EntityDataSourceChangedEventArgs.cs
- XmlSchemaAttributeGroupRef.cs
- CatalogZone.cs
- ControlEvent.cs
- KeyProperty.cs
- RedirectionProxy.cs
- ToolStripContentPanelRenderEventArgs.cs
- ContentElementAutomationPeer.cs
- DataGridViewCellEventArgs.cs
- ActivationServices.cs
- ChannelManager.cs
- XmlDownloadManager.cs
- ToolStripPanel.cs
- DataTableMapping.cs
- XmlDataSourceView.cs
- XPathSelectionIterator.cs
- ComponentGlyph.cs
- FileSystemInfo.cs
- FilteredReadOnlyMetadataCollection.cs