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
- DisplayNameAttribute.cs
- BuildTopDownAttribute.cs
- StyleBamlTreeBuilder.cs
- CompoundFileDeflateTransform.cs
- PropertySegmentSerializationProvider.cs
- PointAnimationBase.cs
- BinaryNode.cs
- WebPartConnectionsDisconnectVerb.cs
- ConfigurationPropertyCollection.cs
- KeyedQueue.cs
- EntityDataSourceEntitySetNameItem.cs
- oledbmetadatacollectionnames.cs
- SoapCodeExporter.cs
- CultureSpecificStringDictionary.cs
- ToolboxItemFilterAttribute.cs
- GroupBoxAutomationPeer.cs
- FontClient.cs
- SelectionChangedEventArgs.cs
- XamlReaderHelper.cs
- PointAnimation.cs
- TextServicesPropertyRanges.cs
- HwndSourceParameters.cs
- Version.cs
- CaseInsensitiveComparer.cs
- ProvidersHelper.cs
- ChangeConflicts.cs
- Cursors.cs
- Soap.cs
- ProxyElement.cs
- XmlMtomReader.cs
- ToolboxBitmapAttribute.cs
- Vector3DKeyFrameCollection.cs
- SoapElementAttribute.cs
- FileDialogCustomPlacesCollection.cs
- Options.cs
- Point3D.cs
- MetadataExporter.cs
- WebPartEditVerb.cs
- ArcSegment.cs
- DurableErrorHandler.cs
- RealizationDrawingContextWalker.cs
- DbProviderFactories.cs
- BinaryFormatter.cs
- ViewKeyConstraint.cs
- MemoryFailPoint.cs
- Thread.cs
- TitleStyle.cs
- NativeMethods.cs
- ChtmlPageAdapter.cs
- ProfileService.cs
- DbException.cs
- ToolStripSettings.cs
- _IPv6Address.cs
- AuthenticationModuleElementCollection.cs
- TemplatePropertyEntry.cs
- XmlValidatingReaderImpl.cs
- ConstantExpression.cs
- PointLight.cs
- AssemblyAssociatedContentFileAttribute.cs
- MatrixConverter.cs
- TextEditorLists.cs
- BaseContextMenu.cs
- RemoteWebConfigurationHostServer.cs
- URLMembershipCondition.cs
- TextSegment.cs
- XmlDataSource.cs
- MetadataFile.cs
- Literal.cs
- ToolStripItemClickedEventArgs.cs
- _LazyAsyncResult.cs
- BufferCache.cs
- StagingAreaInputItem.cs
- FontClient.cs
- StateItem.cs
- ProfileParameter.cs
- MailDefinitionBodyFileNameEditor.cs
- TimelineGroup.cs
- WindowsPrincipal.cs
- ObjectDataSourceDisposingEventArgs.cs
- DispatcherHooks.cs
- DodSequenceMerge.cs
- AtomServiceDocumentSerializer.cs
- DuplicateWaitObjectException.cs
- BrushValueSerializer.cs
- AlphaSortedEnumConverter.cs
- LingerOption.cs
- CryptoConfig.cs
- CodePageEncoding.cs
- CompressStream.cs
- CompilationUtil.cs
- BaseHashHelper.cs
- DocumentGridPage.cs
- SubstitutionResponseElement.cs
- ISAPIRuntime.cs
- RelationshipDetailsRow.cs
- RtfToXamlReader.cs
- TemplateNameScope.cs
- FileCodeGroup.cs
- ServiceChannelFactory.cs
- RequestQueue.cs