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
- BooleanAnimationBase.cs
- DoubleAnimationBase.cs
- UserControlParser.cs
- SoapIncludeAttribute.cs
- DebuggerAttributes.cs
- TimeoutConverter.cs
- PointLightBase.cs
- XsltSettings.cs
- DrawingVisual.cs
- GuidelineSet.cs
- httpstaticobjectscollection.cs
- FileLevelControlBuilderAttribute.cs
- Highlights.cs
- GeometryCollection.cs
- DrawingImage.cs
- CodeCompiler.cs
- ModelProperty.cs
- cookieexception.cs
- ReadOnlyDictionary.cs
- DSASignatureDeformatter.cs
- VirtualPath.cs
- RuleValidation.cs
- InfoCardTrace.cs
- ProcessModuleCollection.cs
- TemplateBaseAction.cs
- PartitionResolver.cs
- _HTTPDateParse.cs
- SBCSCodePageEncoding.cs
- DataGridViewRowsRemovedEventArgs.cs
- PathTooLongException.cs
- TextShapeableCharacters.cs
- MeasureData.cs
- ping.cs
- XmlRootAttribute.cs
- Activity.cs
- QilNode.cs
- WebConfigurationHostFileChange.cs
- EDesignUtil.cs
- StreamWriter.cs
- ContextDataSourceContextData.cs
- DesignerCategoryAttribute.cs
- BaseCollection.cs
- RawKeyboardInputReport.cs
- Int16Storage.cs
- FloatMinMaxAggregationOperator.cs
- CollectionExtensions.cs
- ButtonField.cs
- SqlCachedBuffer.cs
- MobileSysDescriptionAttribute.cs
- CompositionAdorner.cs
- AssociationSetMetadata.cs
- PageBreakRecord.cs
- WebPartsSection.cs
- GridItemPatternIdentifiers.cs
- metadatamappinghashervisitor.hashsourcebuilder.cs
- ContentValidator.cs
- BindingList.cs
- SourceInterpreter.cs
- HyperLinkStyle.cs
- WaitHandleCannotBeOpenedException.cs
- VSWCFServiceContractGenerator.cs
- PropertyKey.cs
- BufferedMessageData.cs
- CrossSiteScriptingValidation.cs
- FixedSOMTableCell.cs
- InvalidProgramException.cs
- ResourcePropertyMemberCodeDomSerializer.cs
- PartitionerStatic.cs
- ProfileModule.cs
- TemplateColumn.cs
- OracleParameterCollection.cs
- SingleConverter.cs
- ReceiveErrorHandling.cs
- TypeBuilder.cs
- PerformanceCounterPermissionEntry.cs
- StaticSiteMapProvider.cs
- IgnoreDeviceFilterElement.cs
- DynamicField.cs
- Util.cs
- TransformValueSerializer.cs
- GroupItem.cs
- StreamUpdate.cs
- PropertyChangeTracker.cs
- Double.cs
- PersonalizablePropertyEntry.cs
- DataGridAddNewRow.cs
- CodeSubDirectory.cs
- SubqueryTrackingVisitor.cs
- CachedTypeface.cs
- CalendarDayButton.cs
- CalendarDateRangeChangingEventArgs.cs
- MarkedHighlightComponent.cs
- ListViewTableRow.cs
- ValueQuery.cs
- IncomingWebRequestContext.cs
- AppDomainUnloadedException.cs
- CompilerError.cs
- Bitmap.cs
- ListView.cs
- Message.cs