fork download
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. public struct Range<T>
  5. {
  6. public T From { get; set; }
  7. public T To { get; set; }
  8.  
  9. public bool HasValue(T value)
  10. {
  11. return value != null
  12. && (From == null || Comparer<T>.Default.Compare(From, value) <= 0)
  13. && (To == null || Comparer<T>.Default.Compare(To, value) >= 0);
  14. }
  15. }
  16.  
  17. public class Test
  18. {
  19. public static void Main()
  20. {
  21. var a = new Range <int> { From = 10, To = 16 };
  22. Console.WriteLine("var a = new Range <int> { From = 10, To = 16 };");
  23. Console.WriteLine(a.HasValue(0));
  24. Console.WriteLine(a.HasValue(15));
  25. Console.WriteLine(a.HasValue(17));
  26. Console.WriteLine();
  27.  
  28. var b = new Range <int?> { From = 10, To = 16 };
  29. Console.WriteLine("var b = new Range <int?> { From = 10, To = 16 };");
  30. Console.WriteLine(b.HasValue(null));
  31. Console.WriteLine(b.HasValue(0));
  32. Console.WriteLine(b.HasValue(15));
  33. Console.WriteLine(b.HasValue(17));
  34. Console.WriteLine();
  35.  
  36. var c = new Range <int?> { From = null, To = 16 };
  37. Console.WriteLine("var c = new Range <int?> { From = null, To = 16 };");
  38. Console.WriteLine(c.HasValue(null));
  39. Console.WriteLine(c.HasValue(0));
  40. Console.WriteLine(c.HasValue(15));
  41. Console.WriteLine(c.HasValue(17));
  42. Console.WriteLine();
  43.  
  44. var d = new Range <int?> { From = 10, To = null };
  45. Console.WriteLine("var d = new Range <int?> { From = 10, To = null };");
  46. Console.WriteLine(d.HasValue(null));
  47. Console.WriteLine(d.HasValue(0));
  48. Console.WriteLine(d.HasValue(15));
  49. Console.WriteLine(d.HasValue(17));
  50. Console.WriteLine();
  51.  
  52. var e = new Range <int?> { From = null, To = null };
  53. Console.WriteLine("var e = new Range <int?> { From = null, To = null };");
  54. Console.WriteLine(e.HasValue(null));
  55. Console.WriteLine(e.HasValue(0));
  56. Console.WriteLine(e.HasValue(15));
  57. Console.WriteLine(e.HasValue(17));
  58. Console.WriteLine();
  59. }
  60. }
Success #stdin #stdout 0s 131712KB
stdin
Standard input is empty
stdout
var a = new Range <int> { From = 10, To = 16 };
False
True
False

var b = new Range <int?> { From = 10, To = 16 };
False
False
True
False

var c = new Range <int?> { From = null, To = 16 };
False
True
True
False

var d = new Range <int?> { From = 10, To = null };
False
False
True
True

var e = new Range <int?> { From = null, To = null };
False
True
True
True