Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / clr / src / BCL / System / ArraySegment.cs / 1 / 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; 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"); _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")); _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. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XmlSchemaSet.cs
- CheckBoxAutomationPeer.cs
- TextRangeSerialization.cs
- CapacityStreamGeometryContext.cs
- HttpAsyncResult.cs
- DefaultProxySection.cs
- DataGridViewRowConverter.cs
- X509SubjectKeyIdentifierClause.cs
- DataServiceQueryOfT.cs
- ListViewInsertEventArgs.cs
- Privilege.cs
- CriticalHandle.cs
- nulltextnavigator.cs
- ToolStripItemEventArgs.cs
- IdentityNotMappedException.cs
- UrlMappingCollection.cs
- EdmError.cs
- JoinQueryOperator.cs
- NotificationContext.cs
- EdmProviderManifest.cs
- Attributes.cs
- FormatControl.cs
- CompositeCollectionView.cs
- DataServiceResponse.cs
- SolidColorBrush.cs
- TypeUtil.cs
- StructuralType.cs
- PersistenceTypeAttribute.cs
- ConditionalAttribute.cs
- DomainConstraint.cs
- UIPropertyMetadata.cs
- BreakRecordTable.cs
- CoordinationService.cs
- Model3DCollection.cs
- InternalMappingException.cs
- DropSource.cs
- HtmlWindowCollection.cs
- DataErrorValidationRule.cs
- ParallelRangeManager.cs
- XmlILOptimizerVisitor.cs
- DataGridViewColumn.cs
- BaseValidatorDesigner.cs
- DataGridToolTip.cs
- XmlSchemaSet.cs
- HwndProxyElementProvider.cs
- DataControlButton.cs
- ConfigXmlSignificantWhitespace.cs
- ExtendedProtectionPolicy.cs
- IODescriptionAttribute.cs
- SemanticValue.cs
- StateMachineHistory.cs
- WebRequestModulesSection.cs
- SmiRecordBuffer.cs
- WebBrowserNavigatingEventHandler.cs
- SqlWriter.cs
- LineVisual.cs
- RoutedEventHandlerInfo.cs
- BasicKeyConstraint.cs
- StorageAssociationSetMapping.cs
- CryptoApi.cs
- Activity.cs
- HtmlDocument.cs
- VScrollBar.cs
- SinglePageViewer.cs
- DbReferenceCollection.cs
- BufferModeSettings.cs
- IdSpace.cs
- MasterPageBuildProvider.cs
- InitializerFacet.cs
- _ConnectionGroup.cs
- MonthCalendar.cs
- FileSecurity.cs
- StreamUpgradeProvider.cs
- PhysicalFontFamily.cs
- Authorization.cs
- CompilationAssemblyInstallComponent.cs
- MachinePropertyVariants.cs
- CompositeDesignerAccessibleObject.cs
- PartDesigner.cs
- XmlSchemaParticle.cs
- ComponentResourceKey.cs
- ThreadStaticAttribute.cs
- RelatedPropertyManager.cs
- DecimalFormatter.cs
- Label.cs
- TraceRecord.cs
- PartialArray.cs
- DateRangeEvent.cs
- RemotingAttributes.cs
- SkewTransform.cs
- PrinterResolution.cs
- AppearanceEditorPart.cs
- RelatedPropertyManager.cs
- QuaternionRotation3D.cs
- Profiler.cs
- ListSourceHelper.cs
- Compilation.cs
- NameValueCollection.cs
- ModuleElement.cs
- TextRunCache.cs