예제 #1
0
        /// <summary>
        /// Алгоритм, возвращающий множество, полученное операцией объединения его с указанным
        /// </summary>
        /// <param name="other"></param>
        /// <returns></returns>
        public MySetClass <T> SymmetricDifference(MySetClass <T> other)
        {
            // Проверяем входные данные
            if (other == null)
            {
                throw new ArgumentNullException(nameof(other));
            }
            var union        = Union(other);
            var intersection = Intersection(other);

            return(union.Difference(intersection));
        }
예제 #2
0
        /// <summary>
        /// Алгоритм, возвращающий множество, являющееся разностью текущего с указанным
        /// </summary>
        /// <param name="other"></param>
        /// <returns></returns>
        public MySetClass <T> Difference(MySetClass <T> other)
        {
            // Проверяем входные данные
            if (other == null)
            {
                throw new ArgumentNullException(nameof(other));
            }
            var result = new MySetClass <T>(_items);

            foreach (var item in other._items)
            {
                result.Remove(item);
            }
            return(result);
        }
예제 #3
0
        /// <summary>
        /// Алгоритм, возвращающий множество, полученное операцией пересечения его с указанным
        /// </summary>
        /// <param name="other"></param>
        /// <returns></returns>
        public MySetClass <T> Intersection(MySetClass <T> other)
        {
            // Проверяем входные данные
            if (other == null)
            {
                throw new ArgumentNullException(nameof(other));
            }
            var result = new MySetClass <T>();

            foreach (var item in other._items)
            {
                if (Contains(item))
                {
                    result.Add(item);
                }
            }
            return(result);
        }