Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / ArraySegment.cs / 1305376 / ArraySegment.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: ArraySegment** ** ** Purpose: Convenient wrapper for an array, an offset, and ** a count. Ideally used in streams & collections. ** Net Classes will consume an array of these. ** ** ===========================================================*/ using System.Runtime.InteropServices; using System.Diagnostics.Contracts; namespace System { [Serializable] public struct ArraySegment { private T[] _array; private int _offset; private int _count; public ArraySegment(T[] array) { if (array == null) throw new ArgumentNullException("array"); Contract.EndContractBlock(); _array = array; _offset = 0; _count = array.Length; } public ArraySegment(T[] array, int offset, int count) { if (array == null) throw new ArgumentNullException("array"); if (offset < 0) throw new ArgumentOutOfRangeException("offset", Environment.GetResourceString("ArgumentOutOfRange_NeedNonNegNum")); if (count < 0) throw new ArgumentOutOfRangeException("count", Environment.GetResourceString("ArgumentOutOfRange_NeedNonNegNum")); if (array.Length - offset < count) throw new ArgumentException(Environment.GetResourceString("Argument_InvalidOffLen")); Contract.EndContractBlock(); _array = array; _offset = offset; _count = count; } public T[] Array { get { return _array; } } public int Offset { get { return _offset; } } public int Count { get { return _count; } } public override int GetHashCode() { return _array.GetHashCode() ^ _offset ^ _count; } public override bool Equals(Object obj) { if (obj is ArraySegment ) return Equals((ArraySegment )obj); else return false; } public bool Equals(ArraySegment obj) { return obj._array == _array && obj._offset == _offset && obj._count == _count; } public static bool operator ==(ArraySegment a, ArraySegment b) { return a.Equals(b); } public static bool operator !=(ArraySegment a, ArraySegment b) { return !(a == b); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XhtmlCssHandler.cs
- EventLevel.cs
- LoginCancelEventArgs.cs
- SerializationUtility.cs
- ProgressBarAutomationPeer.cs
- AppDomainEvidenceFactory.cs
- DiscoveryEndpointValidator.cs
- Double.cs
- Tablet.cs
- UnmanagedMarshal.cs
- SimpleLine.cs
- CodePrimitiveExpression.cs
- WindowsTooltip.cs
- ParameterCollectionEditor.cs
- SystemIcmpV6Statistics.cs
- Array.cs
- Variant.cs
- Marshal.cs
- DataGridColumnCollection.cs
- SqlColumnizer.cs
- EmbeddedMailObjectsCollection.cs
- ResXResourceReader.cs
- BaseProcessor.cs
- Currency.cs
- invalidudtexception.cs
- __ComObject.cs
- ObjectDataSourceSelectingEventArgs.cs
- QueryExpression.cs
- XmlCompatibilityReader.cs
- ItemsPresenter.cs
- MimeFormImporter.cs
- ComponentResourceKeyConverter.cs
- DataRowComparer.cs
- FlowPosition.cs
- XamlParser.cs
- CodeIdentifier.cs
- AdPostCacheSubstitution.cs
- GridViewRowPresenterBase.cs
- SecurityTokenAuthenticator.cs
- ScriptManagerProxy.cs
- XPathParser.cs
- XmlSchemaValidator.cs
- SqlGenericUtil.cs
- ByteStreamMessageEncoderFactory.cs
- EntitySqlQueryCacheEntry.cs
- CharUnicodeInfo.cs
- StatusBarItem.cs
- ScrollItemProviderWrapper.cs
- Executor.cs
- GeneratedView.cs
- SchemaObjectWriter.cs
- HostedBindingBehavior.cs
- MsmqVerifier.cs
- DockPatternIdentifiers.cs
- PlatformNotSupportedException.cs
- PermissionAttributes.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- DragCompletedEventArgs.cs
- TypeConverter.cs
- IDReferencePropertyAttribute.cs
- PropertyGrid.cs
- CodeConstructor.cs
- DataContractJsonSerializer.cs
- XsltOutput.cs
- EnvironmentPermission.cs
- HostedElements.cs
- Module.cs
- FormattedTextSymbols.cs
- cookiecontainer.cs
- DataGridViewButtonCell.cs
- MeasureItemEvent.cs
- ActivationArguments.cs
- ServicesSection.cs
- ClientConfigPaths.cs
- PartDesigner.cs
- MailAddress.cs
- ObjectReferenceStack.cs
- panel.cs
- VisualTreeHelper.cs
- AnimationLayer.cs
- LocalizationComments.cs
- DesignTimeTemplateParser.cs
- CaretElement.cs
- CodeStatementCollection.cs
- Rijndael.cs
- CompModSwitches.cs
- TimelineClockCollection.cs
- TextModifierScope.cs
- DoubleLinkListEnumerator.cs
- StreamHelper.cs
- XamlInt32CollectionSerializer.cs
- Helper.cs
- TreeViewDesigner.cs
- SamlConditions.cs
- TypefaceMetricsCache.cs
- PkcsMisc.cs
- BaseCodePageEncoding.cs
- ToolStripDropDownItem.cs
- ParserOptions.cs
- CommonObjectSecurity.cs