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
- TextRangeProviderWrapper.cs
- InteropAutomationProvider.cs
- Soap.cs
- InputScope.cs
- ContentPosition.cs
- ExpressionTextBox.xaml.cs
- ErrorWrapper.cs
- SemaphoreSlim.cs
- DiscoveryDefaults.cs
- PerfCounters.cs
- PopupEventArgs.cs
- CompilerLocalReference.cs
- IsolationInterop.cs
- EndpointNameMessageFilter.cs
- Listbox.cs
- JulianCalendar.cs
- CommandHelpers.cs
- ServiceHttpModule.cs
- DoubleLink.cs
- BindingMAnagerBase.cs
- GeneralTransform3DTo2DTo3D.cs
- ObjectListField.cs
- SwitchElementsCollection.cs
- TraceLog.cs
- XamlFigureLengthSerializer.cs
- NodeInfo.cs
- OracleBinary.cs
- WindowsSlider.cs
- UnsafeMethods.cs
- TransactionScope.cs
- DataBoundControl.cs
- MorphHelper.cs
- GeometryDrawing.cs
- HistoryEventArgs.cs
- RewritingValidator.cs
- Literal.cs
- SmiRecordBuffer.cs
- InputMethodStateTypeInfo.cs
- SiteIdentityPermission.cs
- WindowsListViewGroupSubsetLink.cs
- ProfileEventArgs.cs
- ObjectDataSourceEventArgs.cs
- FamilyMapCollection.cs
- ScrollProperties.cs
- ButtonChrome.cs
- TdsValueSetter.cs
- PopOutPanel.cs
- CollectionMarkupSerializer.cs
- ExtenderControl.cs
- XmlWriterTraceListener.cs
- URLMembershipCondition.cs
- SerializationStore.cs
- RadioButtonAutomationPeer.cs
- PrivilegeNotHeldException.cs
- SafeNativeMethodsMilCoreApi.cs
- TextInfo.cs
- SafeArrayTypeMismatchException.cs
- ControlEvent.cs
- FillErrorEventArgs.cs
- CommunicationObjectFaultedException.cs
- CustomExpression.cs
- HostingEnvironmentSection.cs
- BindingExpressionBase.cs
- StructuredProperty.cs
- PrinterSettings.cs
- EqualityComparer.cs
- StructuralComparisons.cs
- PeerPresenceInfo.cs
- DataException.cs
- PageAsyncTaskManager.cs
- RemotingServices.cs
- RequestBringIntoViewEventArgs.cs
- PreProcessInputEventArgs.cs
- CodeAttributeDeclaration.cs
- SchemaImporterExtensionsSection.cs
- HwndPanningFeedback.cs
- StructuralObject.cs
- LockedAssemblyCache.cs
- EventlogProvider.cs
- KnownTypeDataContractResolver.cs
- Transform3DCollection.cs
- LineSegment.cs
- panel.cs
- SmtpLoginAuthenticationModule.cs
- BamlBinaryWriter.cs
- UserInitiatedRoutedEventPermissionAttribute.cs
- ContentPresenter.cs
- PropertyTabChangedEvent.cs
- XmlSchemaIdentityConstraint.cs
- DefaultValueAttribute.cs
- DetailsViewPageEventArgs.cs
- CollectionEditor.cs
- Utils.cs
- TextSelectionHighlightLayer.cs
- QilInvokeEarlyBound.cs
- ContextMenuStripActionList.cs
- Attributes.cs
- CommonXSendMessage.cs
- ObfuscateAssemblyAttribute.cs
- PathFigureCollectionValueSerializer.cs