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
- HostnameComparisonMode.cs
- PerformanceCounterCategory.cs
- DelimitedListTraceListener.cs
- SrgsElementFactory.cs
- Material.cs
- KeyInfo.cs
- EntitySqlQueryCacheEntry.cs
- CircleHotSpot.cs
- AsyncResult.cs
- ConfigUtil.cs
- InstanceLockQueryResult.cs
- SmiTypedGetterSetter.cs
- MemberDescriptor.cs
- LazyTextWriterCreator.cs
- AppDomainAttributes.cs
- SecurityException.cs
- ConversionValidationRule.cs
- PeerDefaultCustomResolverClient.cs
- LocatorGroup.cs
- CodeTypeDelegate.cs
- SendMailErrorEventArgs.cs
- DefaultIfEmptyQueryOperator.cs
- Misc.cs
- StrokeCollection2.cs
- HttpPostedFile.cs
- InheritedPropertyChangedEventArgs.cs
- OpenTypeCommon.cs
- XNameTypeConverter.cs
- LocatorPart.cs
- DocumentViewerConstants.cs
- cookiecollection.cs
- XamlFilter.cs
- XmlDocument.cs
- SourceLineInfo.cs
- DoubleKeyFrameCollection.cs
- HttpsHostedTransportConfiguration.cs
- EditingCoordinator.cs
- WebPartConnectionsEventArgs.cs
- ExportOptions.cs
- ToolStripItemEventArgs.cs
- DataRowComparer.cs
- Native.cs
- StringFreezingAttribute.cs
- DocumentManager.cs
- QilParameter.cs
- FontClient.cs
- AutomationPeer.cs
- TemporaryBitmapFile.cs
- _Rfc2616CacheValidators.cs
- Quad.cs
- AssociationSetMetadata.cs
- WhitespaceRuleLookup.cs
- TextDocumentView.cs
- StringDictionary.cs
- EventHandlingScope.cs
- Privilege.cs
- DesignUtil.cs
- TemplatedControlDesigner.cs
- BackEase.cs
- WebBrowser.cs
- ListBoxItem.cs
- WorkflowMarkupSerializer.cs
- WebEventTraceProvider.cs
- SystemColors.cs
- XmlDeclaration.cs
- TextEditorSelection.cs
- Constraint.cs
- ExpressionParser.cs
- hresults.cs
- SqlDeflator.cs
- UdpSocketReceiveManager.cs
- LocalBuilder.cs
- QilGenerator.cs
- EUCJPEncoding.cs
- VerificationException.cs
- XmlAnyElementAttribute.cs
- BasicHttpSecurityElement.cs
- MetadataArtifactLoaderComposite.cs
- ReadOnlyCollection.cs
- Graphics.cs
- basecomparevalidator.cs
- WindowsRegion.cs
- BufferAllocator.cs
- RsaElement.cs
- CanExpandCollapseAllConverter.cs
- SqlExpander.cs
- WebHttpSecurityElement.cs
- ElementMarkupObject.cs
- QueryCacheManager.cs
- CodeIterationStatement.cs
- RewritingProcessor.cs
- CodeSnippetCompileUnit.cs
- InternalBase.cs
- ImportContext.cs
- OletxVolatileEnlistment.cs
- StrokeNodeData.cs
- SQLGuidStorage.cs
- DataErrorValidationRule.cs
- DecoderBestFitFallback.cs
- ClickablePoint.cs