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
- TagMapInfo.cs
- XmlSchemaElement.cs
- DictionaryTraceRecord.cs
- WebPartHelpVerb.cs
- TTSEngineTypes.cs
- EventRoute.cs
- RegisterResponseInfo.cs
- TimeZoneInfo.cs
- SiteOfOriginContainer.cs
- FormatterServices.cs
- X509CertificateStore.cs
- WebPartMenuStyle.cs
- ResourcesBuildProvider.cs
- ProxyAttribute.cs
- BaseWebProxyFinder.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- CqlIdentifiers.cs
- EntityConnection.cs
- __ComObject.cs
- ActivationService.cs
- WebPart.cs
- RegionIterator.cs
- XmlSerializerFormatAttribute.cs
- ScalarConstant.cs
- transactioncontext.cs
- InternalBase.cs
- TableLayoutSettingsTypeConverter.cs
- TransformerInfoCollection.cs
- NameSpaceExtractor.cs
- SkewTransform.cs
- TreeNodeBindingCollection.cs
- OverflowException.cs
- __Filters.cs
- InternalsVisibleToAttribute.cs
- TableLayoutRowStyleCollection.cs
- TraceRecord.cs
- XmlNodeWriter.cs
- FormViewUpdateEventArgs.cs
- HttpCachePolicy.cs
- codemethodreferenceexpression.cs
- DataTransferEventArgs.cs
- SingleTagSectionHandler.cs
- ItemsControl.cs
- HtmlContainerControl.cs
- ValueConversionAttribute.cs
- HuffmanTree.cs
- WebDescriptionAttribute.cs
- UnrecognizedPolicyAssertionElement.cs
- RequestBringIntoViewEventArgs.cs
- Double.cs
- BamlVersionHeader.cs
- hresults.cs
- BevelBitmapEffect.cs
- ConditionCollection.cs
- FirstMatchCodeGroup.cs
- CodeTypeReference.cs
- UnsafeNativeMethods.cs
- HatchBrush.cs
- RoutedEventHandlerInfo.cs
- ActivityExecutionContext.cs
- SqlDataSourceStatusEventArgs.cs
- SubclassTypeValidator.cs
- SelectionHighlightInfo.cs
- DropShadowBitmapEffect.cs
- AsymmetricKeyExchangeDeformatter.cs
- DataServiceEntityAttribute.cs
- GrammarBuilderBase.cs
- propertytag.cs
- WrappedIUnknown.cs
- Queue.cs
- TextBoxDesigner.cs
- _SslSessionsCache.cs
- SlipBehavior.cs
- Nodes.cs
- ProxyWebPart.cs
- ServicesUtilities.cs
- OrderToken.cs
- AutomationPropertyInfo.cs
- DoubleStorage.cs
- NavigationProperty.cs
- FormsAuthenticationModule.cs
- SimpleBitVector32.cs
- Utils.cs
- TreeNodeBinding.cs
- ConsumerConnectionPoint.cs
- ConsumerConnectionPointCollection.cs
- SafeHandles.cs
- CallContext.cs
- serverconfig.cs
- Transaction.cs
- DispatcherProcessingDisabled.cs
- ConfigsHelper.cs
- SerialErrors.cs
- ClientScriptManagerWrapper.cs
- ExceptionUtil.cs
- ExpressionBuilder.cs
- CharEnumerator.cs
- LocalizationParserHooks.cs
- ParallelTimeline.cs
- OdbcReferenceCollection.cs