Thomas Gathings II
hey buddy, the truth hurts.

nifty class that abstracts an interval or range

Monday, October 31, 2005 7:06 PM

the following class cleans up ugly code that tests whether value a is between value b and value c. it works with any class implementing IComparable.

so stuff like this:

if(myDate >= startDate && myDate  <= endDate) ..

becomes this:

if(goodInterval.IsInInterval(myDate))

=========================

 

<code>

using System;

namespace x.Utility
{
 public enum IntervalComparison
 {
  Inclusive =0,
  Exclusive
 }

 /// <summary>
 /// Provides interval needs, defaults to Inclusive on start and end
 /// </summary>
 public class Interval
 {
  private IComparable _start;
  private IComparable _end;
  private IntervalComparison _startComparison = IntervalComparison.Inclusive;
  private IntervalComparison _endComparison = IntervalComparison.Inclusive;

  public Interval(IComparable start, IComparable end)
  {
   _start = start;
   _end = end;

  }

  public Interval(IComparable start, IComparable end, IntervalComparison startComparison, IntervalComparison endComparison)
  {
   _start = start;
   _end = end;
   _startComparison = startComparison;
   _endComparison = endComparison;

  }

  public IComparable IntervalStart
  {
   get{ return _start; }
  }

  public IComparable IntervalEnd
  {
   get{ return _end; }
  }

  public bool IsInInterval(IComparable comparable)
  {
   if(_startComparison == IntervalComparison.Inclusive)
   {
    if(1 == _start.CompareTo(comparable)) return false;
   }

   if(_startComparison == IntervalComparison.Exclusive)
   {
    if(-1 != _start.CompareTo(comparable) ) return false;
   }
   
   if(_endComparison == IntervalComparison.Inclusive)
   {
    if(0 > _end.CompareTo(comparable) ) return false;
   }

   if(_endComparison == IntervalComparison.Exclusive)
   {
    if(1 != _end.CompareTo(comparable) ) return false;
   }

   return true;


  }

 }
}

</code>

 

 


Feedback

No comments posted yet.


Post a comment