Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / 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); } } }
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- StaticSiteMapProvider.cs
- FileChangeNotifier.cs
- ImageList.cs
- ConditionedDesigner.cs
- ObjectConverter.cs
- Debug.cs
- UnhandledExceptionEventArgs.cs
- ConfigXmlSignificantWhitespace.cs
- ActivityDesignerLayoutSerializers.cs
- ToolZone.cs
- WebPartActionVerb.cs
- ConstructorExpr.cs
- SystemInformation.cs
- DataSetSchema.cs
- XmlSchemaObjectCollection.cs
- COMException.cs
- DataList.cs
- Ipv6Element.cs
- TemplateBindingExtensionConverter.cs
- FreezableOperations.cs
- StateItem.cs
- HttpServerUtilityBase.cs
- DynamicMetaObjectBinder.cs
- compensatingcollection.cs
- PeerInvitationResponse.cs
- OracleRowUpdatingEventArgs.cs
- OleDbPermission.cs
- CodeArgumentReferenceExpression.cs
- TransactionScopeDesigner.cs
- SqlNotificationEventArgs.cs
- SByteStorage.cs
- SecurityTokenValidationException.cs
- RuntimeConfigLKG.cs
- HebrewCalendar.cs
- HwndKeyboardInputProvider.cs
- RecordsAffectedEventArgs.cs
- WeakReference.cs
- CultureSpecificStringDictionary.cs
- ADMembershipUser.cs
- SourceElementsCollection.cs
- QilNode.cs
- PatternMatcher.cs
- SecurityKeyEntropyMode.cs
- HtmlTableCellCollection.cs
- Vector3DKeyFrameCollection.cs
- IProvider.cs
- DataControlFieldCell.cs
- DocumentOrderQuery.cs
- UnlockInstanceAsyncResult.cs
- EventManager.cs
- ActivationServices.cs
- ModelTreeManager.cs
- DesignerLabelAdapter.cs
- BasicAsyncResult.cs
- SafeCryptoHandles.cs
- DataGridViewCellStyle.cs
- RSAPKCS1SignatureFormatter.cs
- DictionaryItemsCollection.cs
- BehaviorEditorPart.cs
- EmbeddedMailObject.cs
- ISAPIWorkerRequest.cs
- ProtocolsConfigurationHandler.cs
- DoubleAnimation.cs
- UriSection.cs
- Properties.cs
- WorkBatch.cs
- ActiveXHelper.cs
- CorrelationValidator.cs
- OverflowException.cs
- MSAAEventDispatcher.cs
- PopupControlService.cs
- SystemTcpConnection.cs
- ThicknessKeyFrameCollection.cs
- RoleManagerEventArgs.cs
- PeerCollaborationPermission.cs
- ConnectionInterfaceCollection.cs
- EventLogPermission.cs
- BooleanExpr.cs
- KeyPressEvent.cs
- SudsParser.cs
- Propagator.JoinPropagator.JoinPredicateVisitor.cs
- BitmapMetadata.cs
- XmlAttributeHolder.cs
- UserPreferenceChangedEventArgs.cs
- SpnegoTokenProvider.cs
- FlowNode.cs
- ExtendedProtectionPolicyElement.cs
- FontStretchConverter.cs
- BrowserCapabilitiesFactory.cs
- RawUIStateInputReport.cs
- Attachment.cs
- VectorKeyFrameCollection.cs
- ImageField.cs
- LabelLiteral.cs
- ListControlDataBindingHandler.cs
- Renderer.cs
- StringOutput.cs
- __ComObject.cs
- DataViewManagerListItemTypeDescriptor.cs
- LinkedResourceCollection.cs