using System; using System.Collections.Generic; public struct Range { public T From { get; set; } public T To { get; set; } public bool HasValue(T value) { return value != null && (From == null || Comparer.Default.Compare(From, value) <= 0) && (To == null || Comparer.Default.Compare(To, value) >= 0); } } public class Test { public static void Main() { var a = new Range { From = 10, To = 16 }; Console.WriteLine("var a = new Range { From = 10, To = 16 };"); Console.WriteLine(a.HasValue(0)); Console.WriteLine(a.HasValue(15)); Console.WriteLine(a.HasValue(17)); Console.WriteLine(); var b = new Range { From = 10, To = 16 }; Console.WriteLine("var b = new Range { From = 10, To = 16 };"); Console.WriteLine(b.HasValue(null)); Console.WriteLine(b.HasValue(0)); Console.WriteLine(b.HasValue(15)); Console.WriteLine(b.HasValue(17)); Console.WriteLine(); var c = new Range { From = null, To = 16 }; Console.WriteLine("var c = new Range { From = null, To = 16 };"); Console.WriteLine(c.HasValue(null)); Console.WriteLine(c.HasValue(0)); Console.WriteLine(c.HasValue(15)); Console.WriteLine(c.HasValue(17)); Console.WriteLine(); var d = new Range { From = 10, To = null }; Console.WriteLine("var d = new Range { From = 10, To = null };"); Console.WriteLine(d.HasValue(null)); Console.WriteLine(d.HasValue(0)); Console.WriteLine(d.HasValue(15)); Console.WriteLine(d.HasValue(17)); Console.WriteLine(); var e = new Range { From = null, To = null }; Console.WriteLine("var e = new Range { From = null, To = null };"); Console.WriteLine(e.HasValue(null)); Console.WriteLine(e.HasValue(0)); Console.WriteLine(e.HasValue(15)); Console.WriteLine(e.HasValue(17)); Console.WriteLine(); } }