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
- WebPartHelpVerb.cs
- StaticSiteMapProvider.cs
- NativeCompoundFileAPIs.cs
- FontFamilyConverter.cs
- MyContact.cs
- UnsafeNativeMethods.cs
- HttpHandlerAction.cs
- CompilerWrapper.cs
- CellParagraph.cs
- SourceChangedEventArgs.cs
- WorkflowApplicationTerminatedException.cs
- FileVersion.cs
- ManipulationCompletedEventArgs.cs
- ImageSource.cs
- Visual3D.cs
- CompiledQuery.cs
- MethodResolver.cs
- DynamicResourceExtension.cs
- KeyTimeConverter.cs
- JsonClassDataContract.cs
- ObjectKeyFrameCollection.cs
- DbProviderSpecificTypePropertyAttribute.cs
- WebPartAuthorizationEventArgs.cs
- SmiRequestExecutor.cs
- WindowsIdentity.cs
- SemaphoreSecurity.cs
- HtmlControlPersistable.cs
- TextLineBreak.cs
- RoleManagerEventArgs.cs
- PeerNameRegistration.cs
- NativeMethods.cs
- SoapReflector.cs
- MessageFilterTable.cs
- HashHelper.cs
- SchemaSetCompiler.cs
- ValidatedControlConverter.cs
- DataGridViewCellParsingEventArgs.cs
- UInt64Storage.cs
- ListView.cs
- AnnotationAdorner.cs
- HistoryEventArgs.cs
- _NtlmClient.cs
- NetworkInformationException.cs
- EntityDataSourceViewSchema.cs
- CSharpCodeProvider.cs
- DBDataPermissionAttribute.cs
- EntitySetBase.cs
- InputScopeNameConverter.cs
- ListViewItemSelectionChangedEvent.cs
- WebConfigurationFileMap.cs
- GlobalDataBindingHandler.cs
- MarkupExtensionParser.cs
- QilSortKey.cs
- RewritingSimplifier.cs
- BigInt.cs
- GroupBoxAutomationPeer.cs
- RecipientInfo.cs
- DynamicPropertyHolder.cs
- ImageSourceValueSerializer.cs
- StrokeCollection.cs
- TextChange.cs
- SymLanguageType.cs
- DrawingImage.cs
- HostingEnvironment.cs
- TimeZoneInfo.cs
- EntityContainerRelationshipSetEnd.cs
- SafeFindHandle.cs
- SecureStringHasher.cs
- TrackPoint.cs
- NetTcpBinding.cs
- Menu.cs
- UTF7Encoding.cs
- CallContext.cs
- DescendantBaseQuery.cs
- StringValidatorAttribute.cs
- localization.cs
- OletxCommittableTransaction.cs
- CodeTypeReference.cs
- ItemList.cs
- VirtualizingStackPanel.cs
- Wildcard.cs
- TableLayout.cs
- HeaderLabel.cs
- VirtualPath.cs
- LinqDataSource.cs
- MenuItem.cs
- Predicate.cs
- TableStyle.cs
- MemberRelationshipService.cs
- DataGrid.cs
- VarRefManager.cs
- MarginCollapsingState.cs
- CodeIdentifiers.cs
- StorageComplexTypeMapping.cs
- ManifestResourceInfo.cs
- OdbcErrorCollection.cs
- XmlMemberMapping.cs
- DataObjectEventArgs.cs
- XamlFxTrace.cs
- webbrowsersite.cs