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
- EventProviderBase.cs
- ellipse.cs
- PlaceHolder.cs
- listitem.cs
- PersonalizationDictionary.cs
- DataTableNewRowEvent.cs
- CatalogPartCollection.cs
- SynchronizationContext.cs
- ACL.cs
- StringPropertyBuilder.cs
- StrongNameMembershipCondition.cs
- QuotedStringFormatReader.cs
- ListBase.cs
- PersianCalendar.cs
- BinaryFormatterWriter.cs
- BinaryCommonClasses.cs
- DockPatternIdentifiers.cs
- ResourceLoader.cs
- XmlUrlResolver.cs
- RegexMatch.cs
- WebServiceResponse.cs
- OutputScope.cs
- ProgramPublisher.cs
- ExplicitDiscriminatorMap.cs
- ProviderSettingsCollection.cs
- EditBehavior.cs
- OpCellTreeNode.cs
- Connector.xaml.cs
- CreateSequence.cs
- XmlWrappingWriter.cs
- TrackingMemoryStreamFactory.cs
- RadialGradientBrush.cs
- DuplicateWaitObjectException.cs
- HwndHostAutomationPeer.cs
- SizeIndependentAnimationStorage.cs
- TypeName.cs
- ComponentGlyph.cs
- DbSetClause.cs
- ConnectionManagementElement.cs
- InputElement.cs
- XmlWhitespace.cs
- AnnotationAdorner.cs
- ExtensionDataObject.cs
- FactoryRecord.cs
- diagnosticsswitches.cs
- IdleTimeoutMonitor.cs
- WCFBuildProvider.cs
- KeyNotFoundException.cs
- CngUIPolicy.cs
- StyleSheetRefUrlEditor.cs
- StdValidatorsAndConverters.cs
- exports.cs
- HostSecurityManager.cs
- WindowsButton.cs
- SafeCryptHandles.cs
- ProtocolsSection.cs
- SemanticResolver.cs
- TraceHandlerErrorFormatter.cs
- MessagePropertyVariants.cs
- DataGridViewCellStyleEditor.cs
- Attributes.cs
- SolidColorBrush.cs
- TablePatternIdentifiers.cs
- WebPermission.cs
- DelegatingConfigHost.cs
- SmiEventSink_DeferedProcessing.cs
- _Events.cs
- FilterRepeater.cs
- StorageModelBuildProvider.cs
- SimpleRecyclingCache.cs
- PeerNameResolver.cs
- MultipleViewPattern.cs
- MaterialGroup.cs
- Transform3DGroup.cs
- ContentFilePart.cs
- Operator.cs
- DataPagerField.cs
- VScrollProperties.cs
- SspiNegotiationTokenProviderState.cs
- Identifier.cs
- RegionIterator.cs
- PropertyInformationCollection.cs
- XmlSchemaCollection.cs
- SingleAnimation.cs
- TreeNodeBindingCollection.cs
- ServicesExceptionNotHandledEventArgs.cs
- BaseContextMenu.cs
- DelegateTypeInfo.cs
- InheritedPropertyChangedEventArgs.cs
- ToolStripSeparatorRenderEventArgs.cs
- TCEAdapterGenerator.cs
- DataGridTextBox.cs
- XXXOnTypeBuilderInstantiation.cs
- ImageListStreamer.cs
- XmlWellformedWriter.cs
- TdsParserStaticMethods.cs
- RuleAttributes.cs
- Set.cs
- panel.cs
- FileDataSourceCache.cs