Extensions.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. namespace UniversalNetFrame451;
  2. public static class Extensions
  3. {
  4. public static bool TryDequeue<T>(this Queue<T> queue, out T output)
  5. {
  6. output = default;
  7. if (queue.Count == 0)
  8. return false;
  9. output = queue.Dequeue();
  10. return true;
  11. }
  12. public static bool TryPeek<T>(this Queue<T> queue, out T output)
  13. {
  14. output = default;
  15. if (queue.Count == 0)
  16. return false;
  17. output = queue.Peek();
  18. return true;
  19. }
  20. public static bool TryAddElseReplace<TKey, TValue>(this Dictionary<TKey, TValue> dic, TKey key, TValue value)
  21. {
  22. if (dic.ContainsKey(key))
  23. {
  24. dic[key] = value;
  25. return false;
  26. }
  27. else
  28. {
  29. dic.Add(key, value);
  30. return true;
  31. }
  32. }
  33. public static bool NotIn<T_Enum>(this T_Enum t_Enum, T_Enum enums1) where T_Enum : Enum
  34. {
  35. if (Enum.Equals(t_Enum, enums1))
  36. return false;
  37. return true;
  38. }
  39. public static bool NotIn<T_Enum>(this T_Enum t_Enum, T_Enum enums1, T_Enum enums2) where T_Enum : Enum
  40. {
  41. if (Enum.Equals(t_Enum, enums1))
  42. return false;
  43. if (Enum.Equals(t_Enum, enums2))
  44. return false;
  45. return true;
  46. }
  47. public static bool NotIn<T_Enum>(this T_Enum t_Enum, T_Enum enums1, T_Enum enums2, T_Enum enums3) where T_Enum : Enum
  48. {
  49. if (Enum.Equals(t_Enum, enums1))
  50. return false;
  51. if (Enum.Equals(t_Enum, enums2))
  52. return false;
  53. if (Enum.Equals(t_Enum, enums3))
  54. return false;
  55. return true;
  56. }
  57. public static bool NotIn<T_Enum>(this T_Enum t_Enum, T_Enum enums1, T_Enum enums2, T_Enum enums3, T_Enum enums4) where T_Enum : Enum
  58. {
  59. if (Enum.Equals(t_Enum, enums1))
  60. return false;
  61. if (Enum.Equals(t_Enum, enums2))
  62. return false;
  63. if (Enum.Equals(t_Enum, enums3))
  64. return false;
  65. if (Enum.Equals(t_Enum, enums4))
  66. return false;
  67. return true;
  68. }
  69. public static bool In<T_Enum>(this T_Enum t_Enum, T_Enum enums1) where T_Enum : Enum
  70. {
  71. if (Enum.Equals(t_Enum, enums1))
  72. return true;
  73. return false;
  74. }
  75. public static bool In<T_Enum>(this T_Enum t_Enum, T_Enum enums1, T_Enum enums2) where T_Enum : Enum
  76. {
  77. if (Enum.Equals(t_Enum, enums1))
  78. return true;
  79. if (Enum.Equals(t_Enum, enums2))
  80. return true;
  81. return false;
  82. }
  83. public static bool In<T_Enum>(this T_Enum t_Enum, T_Enum enums1, T_Enum enums2, T_Enum enums3) where T_Enum : Enum
  84. {
  85. if (Enum.Equals(t_Enum, enums1))
  86. return true;
  87. if (Enum.Equals(t_Enum, enums2))
  88. return true;
  89. if (Enum.Equals(t_Enum, enums3))
  90. return true;
  91. return false;
  92. }
  93. public static bool In<T_Enum>(this T_Enum t_Enum, T_Enum enums1, T_Enum enums2, T_Enum enums3, T_Enum enums4) where T_Enum : Enum
  94. {
  95. if (Enum.Equals(t_Enum, enums1))
  96. return true;
  97. if (Enum.Equals(t_Enum, enums2))
  98. return true;
  99. if (Enum.Equals(t_Enum, enums3))
  100. return true;
  101. if (Enum.Equals(t_Enum, enums4))
  102. return true;
  103. return false;
  104. }
  105. public static void Foreach<T>(this IEnumerable<T> t, Action<T> action)
  106. {
  107. foreach (var item in t)
  108. action.Invoke(item);
  109. }
  110. public static void ConditionForeach<T>(this IEnumerable<T> t, Action<T> action, Func<T, bool> judger)
  111. {
  112. foreach (var item in t)
  113. {
  114. if (!judger.Invoke(item))
  115. continue;
  116. action.Invoke(item);
  117. }
  118. }
  119. }