internal ValueRange(T begin, T end, int count)
        {
            this.begin = begin;
            this.end   = end;
            this.step  = default(T);
            this.valid = 0;
            this.count = 0;

            this.step  = Generic.StepFromCount(this, count);
            this.valid = Generic.Validate(this);
            this.count = count;
        }
        /// <summary>
        /// Initializes a new instance of the
        /// <see cref="ValueRange{T}"/> structure with
        /// the specified begin, end and step values.</summary>
        /// <param name="begin">Range begin value.</param>
        /// <param name="end">Range end value.</param>
        /// <param name="step">Range step value.</param>
        public ValueRange(T begin, T end, T step)
        {
            this.begin = begin;
            this.step  = step;
            this.end   = end;
            this.valid = 0;
            this.count = 0;

            this.valid = Generic.Validate(this);
            if (this.valid == ValueRangeValidness.Correct)
            {
                this.count = Generic.GetCount(this);
            }
        }