StorageTransferOptions
 StorageTransferOptions is used to provide options for parallel transfers.
            
                using System;
using System.ComponentModel;
using System.Runtime.CompilerServices;
namespace Azure.Storage
{
    public struct StorageTransferOptions : IEquatable<StorageTransferOptions>
    {
        [EditorBrowsable(EditorBrowsableState.Never)]
        public int? MaximumTransferLength {
            get {
                return checked((int?)MaximumTransferSize);
            }
            set {
                MaximumTransferSize = value;
            }
        }
        public long? MaximumTransferSize {
            [IsReadOnly]
            get;
            set;
        }
        public int? MaximumConcurrency {
            [IsReadOnly]
            get;
            set;
        }
        [EditorBrowsable(EditorBrowsableState.Never)]
        public int? InitialTransferLength {
            get {
                return checked((int?)InitialTransferSize);
            }
            set {
                InitialTransferSize = value;
            }
        }
        public long? InitialTransferSize {
            [IsReadOnly]
            get;
            set;
        }
        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object obj)
        {
            if (obj is StorageTransferOptions) {
                StorageTransferOptions obj2 = (StorageTransferOptions)obj;
                return Equals(obj2);
            }
            return false;
        }
        [EditorBrowsable(EditorBrowsableState.Never)]
        public override int GetHashCode()
        {
            long? nullable = MaximumTransferSize;
            int num = nullable.GetHashCode() ^ MaximumConcurrency.GetHashCode();
            nullable = InitialTransferSize;
            return num ^ nullable.GetHashCode();
        }
        public static bool operator ==(StorageTransferOptions left, StorageTransferOptions right)
        {
            return left.Equals(right);
        }
        public static bool operator !=(StorageTransferOptions left, StorageTransferOptions right)
        {
            return !(left == right);
        }
        [EditorBrowsable(EditorBrowsableState.Never)]
        public bool Equals(StorageTransferOptions obj)
        {
            long? maximumTransferSize = MaximumTransferSize;
            long? maximumTransferSize2 = obj.MaximumTransferSize;
            if ((maximumTransferSize.GetValueOrDefault() == maximumTransferSize2.GetValueOrDefault()) & (maximumTransferSize.HasValue == maximumTransferSize2.HasValue)) {
                int? maximumConcurrency = MaximumConcurrency;
                int? maximumConcurrency2 = obj.MaximumConcurrency;
                if ((maximumConcurrency.GetValueOrDefault() == maximumConcurrency2.GetValueOrDefault()) & (maximumConcurrency.HasValue == maximumConcurrency2.HasValue)) {
                    maximumTransferSize2 = InitialTransferSize;
                    maximumTransferSize = obj.InitialTransferSize;
                    return (maximumTransferSize2.GetValueOrDefault() == maximumTransferSize.GetValueOrDefault()) & (maximumTransferSize2.HasValue == maximumTransferSize.HasValue);
                }
            }
            return false;
        }
    }
}