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
- BaseTemplateParser.cs
- DesignerSerializationOptionsAttribute.cs
- FacetDescriptionElement.cs
- IDQuery.cs
- ContextQuery.cs
- XmlName.cs
- MarkupExtensionReturnTypeAttribute.cs
- DataGridItemCollection.cs
- columnmapfactory.cs
- ModelPropertyDescriptor.cs
- InterleavedZipPartStream.cs
- MimeMapping.cs
- NavigatorOutput.cs
- HttpProfileGroupBase.cs
- SecurityDocument.cs
- SmiGettersStream.cs
- WindowsSecurityTokenAuthenticator.cs
- SynchronizationContext.cs
- CollectionConverter.cs
- EndpointDispatcherTable.cs
- ScriptResourceAttribute.cs
- CursorEditor.cs
- FileUtil.cs
- StatusBarPanel.cs
- DBSqlParser.cs
- BlurBitmapEffect.cs
- InternalControlCollection.cs
- FlowDocumentReaderAutomationPeer.cs
- XPathParser.cs
- XmlCharCheckingWriter.cs
- ToolStripItemRenderEventArgs.cs
- RuntimeWrappedException.cs
- UniqueTransportManagerRegistration.cs
- RegexMatchCollection.cs
- PersonalizationDictionary.cs
- EventSourceCreationData.cs
- EmbossBitmapEffect.cs
- MethodCallTranslator.cs
- Parameter.cs
- HostExecutionContextManager.cs
- ClassValidator.cs
- ItemCollection.cs
- _ShellExpression.cs
- ProtocolViolationException.cs
- MappingMetadataHelper.cs
- QueryResponse.cs
- RemoteWebConfigurationHostStream.cs
- ObjectToken.cs
- ListViewInsertedEventArgs.cs
- RijndaelManaged.cs
- oledbmetadatacollectionnames.cs
- NameValuePermission.cs
- FloatUtil.cs
- TdsParser.cs
- HtmlTextArea.cs
- ParserContext.cs
- SelectionListDesigner.cs
- _FixedSizeReader.cs
- ObjectStateManagerMetadata.cs
- QuaternionAnimationUsingKeyFrames.cs
- WeakReferenceEnumerator.cs
- XsdDuration.cs
- IsolatedStorageFile.cs
- AdCreatedEventArgs.cs
- MultitargetingHelpers.cs
- ProcessHostConfigUtils.cs
- ProfessionalColorTable.cs
- ParallelTimeline.cs
- HtmlForm.cs
- Transactions.cs
- ColorContext.cs
- TimeZone.cs
- ReliabilityContractAttribute.cs
- GetKeyedHashRequest.cs
- ToolStripPanelCell.cs
- EditorPartCollection.cs
- SectionVisual.cs
- HtmlInputSubmit.cs
- URLMembershipCondition.cs
- DataGridViewCellValidatingEventArgs.cs
- BufferBuilder.cs
- ConnectionInterfaceCollection.cs
- SQLMoneyStorage.cs
- AsyncOperationContext.cs
- InternalRelationshipCollection.cs
- OdbcInfoMessageEvent.cs
- SqlWriter.cs
- ObsoleteAttribute.cs
- WindowsSecurityTokenAuthenticator.cs
- RequestCache.cs
- CompilationLock.cs
- ContractValidationHelper.cs
- SpecularMaterial.cs
- CodeTryCatchFinallyStatement.cs
- TypeSource.cs
- ListBox.cs
- Grant.cs
- ScriptManager.cs
- EmptyEnumerable.cs
- AttributeCollection.cs