namespace UniversalNetFrame451; public static class Extensions { public static bool TryDequeue(this Queue queue, out T output) { output = default; if (queue.Count == 0) return false; output = queue.Dequeue(); return true; } public static bool TryPeek(this Queue queue, out T output) { output = default; if (queue.Count == 0) return false; output = queue.Peek(); return true; } public static bool TryAddElseReplace(this Dictionary dic, TKey key, TValue value) { if (dic.ContainsKey(key)) { dic[key] = value; return false; } else { dic.Add(key, value); return true; } } public static bool NotIn(this T_Enum t_Enum, T_Enum enums1) where T_Enum : Enum { if (Enum.Equals(t_Enum, enums1)) return false; return true; } public static bool NotIn(this T_Enum t_Enum, T_Enum enums1, T_Enum enums2) where T_Enum : Enum { if (Enum.Equals(t_Enum, enums1)) return false; if (Enum.Equals(t_Enum, enums2)) return false; return true; } public static bool NotIn(this T_Enum t_Enum, T_Enum enums1, T_Enum enums2, T_Enum enums3) where T_Enum : Enum { if (Enum.Equals(t_Enum, enums1)) return false; if (Enum.Equals(t_Enum, enums2)) return false; if (Enum.Equals(t_Enum, enums3)) return false; return true; } public static bool NotIn(this T_Enum t_Enum, T_Enum enums1, T_Enum enums2, T_Enum enums3, T_Enum enums4) where T_Enum : Enum { if (Enum.Equals(t_Enum, enums1)) return false; if (Enum.Equals(t_Enum, enums2)) return false; if (Enum.Equals(t_Enum, enums3)) return false; if (Enum.Equals(t_Enum, enums4)) return false; return true; } public static bool In(this T_Enum t_Enum, T_Enum enums1) where T_Enum : Enum { if (Enum.Equals(t_Enum, enums1)) return true; return false; } public static bool In(this T_Enum t_Enum, T_Enum enums1, T_Enum enums2) where T_Enum : Enum { if (Enum.Equals(t_Enum, enums1)) return true; if (Enum.Equals(t_Enum, enums2)) return true; return false; } public static bool In(this T_Enum t_Enum, T_Enum enums1, T_Enum enums2, T_Enum enums3) where T_Enum : Enum { if (Enum.Equals(t_Enum, enums1)) return true; if (Enum.Equals(t_Enum, enums2)) return true; if (Enum.Equals(t_Enum, enums3)) return true; return false; } public static bool In(this T_Enum t_Enum, T_Enum enums1, T_Enum enums2, T_Enum enums3, T_Enum enums4) where T_Enum : Enum { if (Enum.Equals(t_Enum, enums1)) return true; if (Enum.Equals(t_Enum, enums2)) return true; if (Enum.Equals(t_Enum, enums3)) return true; if (Enum.Equals(t_Enum, enums4)) return true; return false; } public static void Foreach(this IEnumerable t, Action action) { foreach (var item in t) action.Invoke(item); } public static void ConditionForeach(this IEnumerable t, Action action, Func judger) { foreach (var item in t) { if (!judger.Invoke(item)) continue; action.Invoke(item); } } }