В чем разница между `HashSet <T>.IsSubsetOf() и` HashSet <T>.IsProperSubsetOf() `
В чем разница между этими двумя вызовами метода?
-
HashSet<T>.IsSubsetOf()
-
HashSet<T>.IsProperSubsetOf()
Ответы
Ответ 1
Смотрите здесь
Если текущий набор является надлежащим подмножеством другого, другой должен иметь хотя бы один элемент, который не имеет текущего набора.
vs здесь
Если другой содержит те же элементы, что и текущий набор, текущий набор по-прежнему считается подмножеством других.
Разница заключается в set.IsSubsetOf(set) == true
, тогда как set.IsProperSubsetOf(set) == false
Ответ 2
Это исходит из теории множеств:
S = {e,s,t}, T = {e,s,t}
T является подмножеством S, потому что каждый элемент из T также находится в S. Однако он не является надлежащим подмножеством, так как собственное подмножество, как и нормальное подмножество, также содержит элементы надмножества, но оно также имеет меньше, чем исходная коллекция. Пример:
S = {e,s,t}, T = {e,t}
T - собственное подмножество S.
Ответ 3
IsProperSubsetOf не может содержать весь HashSet. Только часть его.
IsSubsetOf может содержать любое подмножество, включая полный HashSet.
Ответ 4
В разделе "Примеры" найдено здесь:
"Следующий пример создает два разрозненных объекта HashSet и сравнивает их друг с другом. В этом примере lowNumbers является как подмножеством, так и соответствующим подмножеством allNumbers до тех пор, пока allNumbers не будет изменен, используя метод IntersectWith, чтобы содержать только значения, которые являются присутствует в обоих наборах.После того как allNumbers и lowNumbers идентичны, lowNumbers все еще является подмножеством allNumbers, но больше не является надлежащим подмножеством.