<PackageReference Include="Azure.Storage.Common" Version="12.22.0" />

SasIPRange

public struct SasIPRange : IEquatable<SasIPRange>
Represents a range of allowed IP addresses for constructing a Shared Access Signature.
using System; using System.ComponentModel; using System.Net; namespace Azure.Storage.Sas { public readonly struct SasIPRange : IEquatable<SasIPRange> { public IPAddress Start { get; } public IPAddress End { get; } public SasIPRange(IPAddress start, IPAddress end = null) { Start = (start ?? IPAddress.None); End = (end ?? IPAddress.None); } private static bool IsEmpty(IPAddress address) { if (address != null) return address == IPAddress.None; return true; } public override string ToString() { if (!IsEmpty(Start)) { if (!IsEmpty(End)) return Start.ToString() + "-" + End.ToString(); return Start.ToString(); } return string.Empty; } public static SasIPRange Parse(string s) { int num = s.IndexOf('-'); if (num != -1) return new SasIPRange(IPAddress.Parse(s.Substring(0, num)), IPAddress.Parse(s.Substring(num + 1))); return new SasIPRange(IPAddress.Parse(s), null); } [EditorBrowsable(EditorBrowsableState.Never)] public override bool Equals(object obj) { if (obj is SasIPRange) { SasIPRange other = (SasIPRange)obj; return Equals(other); } return false; } [EditorBrowsable(EditorBrowsableState.Never)] public override int GetHashCode() { return (Start?.GetHashCode() ?? 0) ^ (End?.GetHashCode() ?? 0); } public static bool operator ==(SasIPRange left, SasIPRange right) { return left.Equals(right); } public static bool operator !=(SasIPRange left, SasIPRange right) { return !(left == right); } public bool Equals(SasIPRange other) { if ((IsEmpty(Start) && IsEmpty(other.Start)) || (Start != null && Start.Equals(other.Start))) { if (!IsEmpty(End) || !IsEmpty(other.End)) { if (End != null) return End.Equals(other.End); return false; } return true; } return false; } } }