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
- DataGridViewHitTestInfo.cs
- ManipulationVelocities.cs
- AesCryptoServiceProvider.cs
- XmlCharacterData.cs
- HideDisabledControlAdapter.cs
- SignatureToken.cs
- ViewLoader.cs
- DetailsViewInsertEventArgs.cs
- SqlServices.cs
- ShapingEngine.cs
- CodeChecksumPragma.cs
- connectionpool.cs
- XmlSchemaSimpleContent.cs
- Mapping.cs
- Attributes.cs
- ListViewGroup.cs
- ColorTranslator.cs
- SortExpressionBuilder.cs
- ChannelParameterCollection.cs
- DesignerProperties.cs
- ThreadAbortException.cs
- Viewport3DVisual.cs
- QueryableDataSource.cs
- BuildProviderCollection.cs
- ErrorCodes.cs
- SizeConverter.cs
- TextBoxLine.cs
- FrameworkContentElement.cs
- DataGridColumnStyleMappingNameEditor.cs
- DesignerResources.cs
- NumberFunctions.cs
- WebPartUserCapability.cs
- QilLiteral.cs
- WebPartDisplayModeCancelEventArgs.cs
- InputQueueChannel.cs
- VariableAction.cs
- ControlPersister.cs
- MgmtResManager.cs
- TypeConverterHelper.cs
- ExpressionBuilder.cs
- ClientFormsIdentity.cs
- FreezableDefaultValueFactory.cs
- WebBrowserSiteBase.cs
- SqlSupersetValidator.cs
- FormViewCommandEventArgs.cs
- ProfileGroupSettings.cs
- BindingElementCollection.cs
- WebBaseEventKeyComparer.cs
- URI.cs
- MessageBox.cs
- XPathAncestorQuery.cs
- TransformerInfoCollection.cs
- ColumnMapCopier.cs
- DeclaredTypeElementCollection.cs
- DataReceivedEventArgs.cs
- Interlocked.cs
- AcceptorSessionSymmetricMessageSecurityProtocol.cs
- ToolStripTextBox.cs
- ObjectItemCollection.cs
- HostSecurityManager.cs
- Cursors.cs
- SettingsBindableAttribute.cs
- HttpHandlerAction.cs
- ACE.cs
- MissingSatelliteAssemblyException.cs
- CompilerInfo.cs
- ThreadAttributes.cs
- SoapEnumAttribute.cs
- BeginStoryboard.cs
- ComboBox.cs
- RsaElement.cs
- PrimaryKeyTypeConverter.cs
- RegexCapture.cs
- RangeValuePattern.cs
- FileRegion.cs
- SequentialWorkflowHeaderFooter.cs
- ModifyActivitiesPropertyDescriptor.cs
- TrustManager.cs
- RemoteCryptoDecryptRequest.cs
- DashStyle.cs
- TableDetailsCollection.cs
- DiscoveryMessageSequence.cs
- BrushValueSerializer.cs
- ControlIdConverter.cs
- DefaultValueConverter.cs
- XPathNodeList.cs
- TabControl.cs
- EntityViewGenerationAttribute.cs
- PolyBezierSegment.cs
- SolidBrush.cs
- PrimaryKeyTypeConverter.cs
- SchemaSetCompiler.cs
- ContextItem.cs
- DocumentViewerBase.cs
- errorpatternmatcher.cs
- UnauthorizedAccessException.cs
- Floater.cs
- Track.cs
- PrtCap_Builder.cs
- TreeView.cs