Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Collections / ListDictionaryInternal.cs / 1305376 / ListDictionaryInternal.cs
using System.Diagnostics.Contracts; // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: ListDictionaryInternal ** **[....] ** ** ** Purpose: List for exceptions. ** ** ===========================================================*/ namespace System.Collections { /// This is a simple implementation of IDictionary using a singly linked list. This /// will be smaller and faster than a Hashtable if the number of elements is 10 or less. /// This should not be used if performance is important for large numbers of elements. [Serializable] internal class ListDictionaryInternal: IDictionary { DictionaryNode head; int version; int count; [NonSerialized] private Object _syncRoot; public ListDictionaryInternal() { } public Object this[Object key] { get { if (key == null) { throw new ArgumentNullException("key", Environment.GetResourceString("ArgumentNull_Key")); } Contract.EndContractBlock(); DictionaryNode node = head; while (node != null) { if ( node.key.Equals(key) ) { return node.value; } node = node.next; } return null; } set { if (key == null) { throw new ArgumentNullException("key", Environment.GetResourceString("ArgumentNull_Key")); } Contract.EndContractBlock(); #if FEATURE_SERIALIZATION if (!key.GetType().IsSerializable) throw new ArgumentException(Environment.GetResourceString("Argument_NotSerializable"), "key"); if( (value != null) && (!value.GetType().IsSerializable ) ) throw new ArgumentException(Environment.GetResourceString("Argument_NotSerializable"), "value"); #endif version++; DictionaryNode last = null; DictionaryNode node; for (node = head; node != null; node = node.next) { if( node.key.Equals(key) ) { break; } last = node; } if (node != null) { // Found it node.value = value; return; } // Not found, so add a new one DictionaryNode newNode = new DictionaryNode(); newNode.key = key; newNode.value = value; if (last != null) { last.next = newNode; } else { head = newNode; } count++; } } public int Count { get { return count; } } public ICollection Keys { get { return new NodeKeyValueCollection(this, true); } } public bool IsReadOnly { get { return false; } } public bool IsFixedSize { get { return false; } } public bool IsSynchronized { get { return false; } } public Object SyncRoot { get { if( _syncRoot == null) { System.Threading.Interlocked.CompareExchange
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PolicyLevel.cs
- MouseGestureValueSerializer.cs
- TransportReplyChannelAcceptor.cs
- OrCondition.cs
- OleDbEnumerator.cs
- ClientApiGenerator.cs
- COM2ColorConverter.cs
- TextTreeInsertElementUndoUnit.cs
- WindowsStartMenu.cs
- SqlClientWrapperSmiStream.cs
- ItemDragEvent.cs
- UserControlParser.cs
- ColorContext.cs
- AsymmetricSignatureDeformatter.cs
- IdleTimeoutMonitor.cs
- NavigateUrlConverter.cs
- StylusPointPropertyUnit.cs
- QueryContinueDragEventArgs.cs
- PrePrepareMethodAttribute.cs
- RowUpdatedEventArgs.cs
- EntityTypeEmitter.cs
- PropertyConverter.cs
- OpCodes.cs
- DataGridViewTopRowAccessibleObject.cs
- SystemUnicastIPAddressInformation.cs
- MethodExpr.cs
- ValidationErrorInfo.cs
- EDesignUtil.cs
- SelectionEditor.cs
- hwndwrapper.cs
- MultilineStringConverter.cs
- EdmToObjectNamespaceMap.cs
- TextBoxView.cs
- DataGridViewCellEventArgs.cs
- FontConverter.cs
- UInt32.cs
- SectionXmlInfo.cs
- KeyboardInputProviderAcquireFocusEventArgs.cs
- latinshape.cs
- DocumentViewerBaseAutomationPeer.cs
- Decimal.cs
- AddressingVersion.cs
- OletxEnlistment.cs
- WebReference.cs
- RegisteredExpandoAttribute.cs
- GenericEnumerator.cs
- SimpleFileLog.cs
- UnmanagedHandle.cs
- FixUp.cs
- PackageRelationshipCollection.cs
- TimeSpanStorage.cs
- StylusPlugInCollection.cs
- SafeCryptoHandles.cs
- GeneralTransform3D.cs
- HttpConfigurationSystem.cs
- QilXmlWriter.cs
- AnchorEditor.cs
- DateTimePickerDesigner.cs
- ClientBuildManager.cs
- DataTable.cs
- AnimatedTypeHelpers.cs
- XmlLinkedNode.cs
- XmlNullResolver.cs
- AttachInfo.cs
- XsdBuildProvider.cs
- DurableInstancingOptions.cs
- CssClassPropertyAttribute.cs
- ServiceDesigner.cs
- HttpResponseWrapper.cs
- xdrvalidator.cs
- AssertUtility.cs
- DataGridViewCheckBoxColumn.cs
- EdmToObjectNamespaceMap.cs
- DeferredReference.cs
- ConfigurationElement.cs
- SqlDependencyUtils.cs
- ConfigPathUtility.cs
- IIS7UserPrincipal.cs
- WebColorConverter.cs
- EnumValidator.cs
- PageTheme.cs
- StyleSelector.cs
- DataObjectMethodAttribute.cs
- XPathMessageFilterElementComparer.cs
- LoginNameDesigner.cs
- Panel.cs
- WmfPlaceableFileHeader.cs
- SinglePageViewer.cs
- TextElementEnumerator.cs
- WebControlAdapter.cs
- CryptographicAttribute.cs
- PointAnimationUsingPath.cs
- SystemWebCachingSectionGroup.cs
- StatusBar.cs
- AppliesToBehaviorDecisionTable.cs
- Highlights.cs
- ReferenceSchema.cs
- ToolStripPanelRenderEventArgs.cs
- ListDataBindEventArgs.cs
- TransformPattern.cs