В чем разница между `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, но больше не является надлежащим подмножеством.