| File: System\SequencePosition.cs | Web Access |
| Project: src\runtime\src\libraries\System.Memory\src\System.Memory.csproj (System.Memory) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.ComponentModel; using System.Diagnostics.CodeAnalysis; namespace System { /// <summary> /// Represents position in non-contiguous set of memory. /// Parts of this type should not be interpreted by anything but the type that created it. /// </summary> public readonly struct SequencePosition : IEquatable<SequencePosition> { private readonly object? _object; private readonly int _integer; /// <summary> /// Creates new <see cref="SequencePosition"/> /// </summary> public SequencePosition(object? @object, int integer) { _object = @object; _integer = integer; } /// <summary> /// Returns object part of this <see cref="SequencePosition"/> /// </summary> [EditorBrowsable(EditorBrowsableState.Never)] public object? GetObject() => _object; /// <summary> /// Returns integer part of this <see cref="SequencePosition"/> /// </summary> [EditorBrowsable(EditorBrowsableState.Never)] public int GetInteger() => _integer; /// <summary> /// Indicates whether the current <see cref="SequencePosition"/> is equal to another <see cref="SequencePosition"/>. /// <see cref="SequencePosition"/> equality does not guarantee that they point to the same location in <see cref="System.Buffers.ReadOnlySequence{T}" /> /// </summary> public bool Equals(SequencePosition other) => _integer == other._integer && object.Equals(this._object, other._object); /// <summary> /// Indicates whether the current <see cref="SequencePosition"/> is equal to another <see cref="object"/>. /// <see cref="SequencePosition"/> equality does not guarantee that they point to the same location in <see cref="System.Buffers.ReadOnlySequence{T}" /> /// </summary> [EditorBrowsable(EditorBrowsableState.Never)] public override bool Equals([NotNullWhen(true)] object? obj) => obj is SequencePosition other && this.Equals(other); /// <inheritdoc /> [EditorBrowsable(EditorBrowsableState.Never)] public override int GetHashCode() => HashCode.Combine(_object?.GetHashCode() ?? 0, _integer); } }