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
- AttachedProperty.cs
- ProtectedConfigurationSection.cs
- MenuTracker.cs
- ProfileGroupSettingsCollection.cs
- CustomUserNameSecurityTokenAuthenticator.cs
- Vector.cs
- EventRoute.cs
- DecimalStorage.cs
- UInt16.cs
- ToolStripSystemRenderer.cs
- EnumerableCollectionView.cs
- StringWriter.cs
- ProxyAttribute.cs
- XmlUtil.cs
- EdmProviderManifest.cs
- UiaCoreTypesApi.cs
- PersonalizableTypeEntry.cs
- KnowledgeBase.cs
- FixedSOMContainer.cs
- GatewayIPAddressInformationCollection.cs
- SequenceDesigner.xaml.cs
- EdgeProfileValidation.cs
- NumberFunctions.cs
- BuildResult.cs
- RepeaterItem.cs
- DataPointer.cs
- RecognizerBase.cs
- Faults.cs
- ViewBox.cs
- TemplatePropertyEntry.cs
- DesignerRegion.cs
- CollectionEditor.cs
- ChannelFactoryBase.cs
- BitmapCache.cs
- ProcessHostMapPath.cs
- AlgoModule.cs
- SiteMap.cs
- GrammarBuilderDictation.cs
- unsafenativemethodstextservices.cs
- _TransmitFileOverlappedAsyncResult.cs
- XmlSerializerFactory.cs
- XPathBinder.cs
- counter.cs
- ExtendedPropertyCollection.cs
- XamlTreeBuilder.cs
- mactripleDES.cs
- Graph.cs
- PerspectiveCamera.cs
- NetMsmqBindingCollectionElement.cs
- RouteParameter.cs
- QilCloneVisitor.cs
- ImageCodecInfo.cs
- ContainerControl.cs
- InputProviderSite.cs
- VirtualDirectoryMapping.cs
- TextBreakpoint.cs
- safelinkcollection.cs
- EditorPart.cs
- BitmapEffectrendercontext.cs
- ValidationEventArgs.cs
- SQLUtility.cs
- XamlStyleSerializer.cs
- _CommandStream.cs
- BuilderInfo.cs
- TransactedBatchingBehavior.cs
- HtmlUtf8RawTextWriter.cs
- HttpRequestTraceRecord.cs
- MailDefinition.cs
- SerialErrors.cs
- Properties.cs
- GridEntry.cs
- BevelBitmapEffect.cs
- Bits.cs
- ByteStorage.cs
- StylusPointProperty.cs
- DefaultMemberAttribute.cs
- PerfService.cs
- SerializationEventsCache.cs
- ArgumentOutOfRangeException.cs
- CallContext.cs
- OperationExecutionFault.cs
- HandlerElement.cs
- PrivacyNoticeBindingElement.cs
- DefaultObjectSerializer.cs
- ByteAnimationUsingKeyFrames.cs
- Cursors.cs
- BaseValidator.cs
- FormatConvertedBitmap.cs
- TypographyProperties.cs
- SR.cs
- DataGridColumnHeader.cs
- LogRestartAreaEnumerator.cs
- ClientSettingsStore.cs
- AnnotationDocumentPaginator.cs
- FormCollection.cs
- CSharpCodeProvider.cs
- TraceSection.cs
- Nullable.cs
- SqlCacheDependency.cs
- ProcessManager.cs