Быстрый 3+ ответ, основанный на решении Кекоа :
let duration = 0.15 //match this to the value of the UIView.animate(withDuration:) call
CATransaction.begin()
CATransaction.setValue(duration, forKey: kCATransactionAnimationDuration)
myView.layer.mask.position = CGPoint(x: [new X], y: [new Y]) //just an example
CATransaction.commit()
Но метод HashSet.Add возвращает false, если значение уже присутствует - разве этого недостаточно?
HashSet<string> set = new HashSet<string>();
...
if (!set.Add("Key"))
/* Not added */
Если вам нужна функциональность в стиле AddRange
, посмотрите C5 . Коллекции в семействе C5 имеют гораздо больше функциональных возможностей, представленных в их интерфейсах, включая функцию AddAll
, которая принимает перечислимое число, по очереди добавляя все элементы перечисляемого в коллекцию.
РЕДАКТИРОВАТЬ: Также обратите внимание, что коллекции C5
реализуют интерфейсы System.Collections.Generic
ICollection
и IList
там, где это необходимо, поэтому могут использоваться в качестве реализации даже в системах которые ожидают эти интерфейсы.