/// <summary> /// Performs an "exclusive-or" of the two SerializableLists, keeping only the elements that /// are in one of the SerializableLists, but not in both. The original SerializableLists are not modified /// during this operation. The result SerializableList is a <c>Clone()</c> of one of the SerializableLists /// (<c>a</c> if it is not <c>null</c>) containing /// the elements from the exclusive-or operation. /// </summary> /// <param name="a">A SerializableList of elements.</param> /// <param name="b">A SerializableList of elements.</param> /// <returns>A SerializableList containing the result of <c>a ^ b</c>. <c>null</c> if both SerializableLists are <c>null</c>.</returns> public static SerializableList <T> ExclusiveOr(SerializableList <T> a, SerializableList <T> b) { if (a == null && b == null) { return(null); } else if (a == null) { return((SerializableList <T>)b.Clone()); } else if (b == null) { return((SerializableList <T>)a.Clone()); } else { return(a.ExclusiveOr(b)); } }
/// <summary> /// Performs a "union" of two SerializableLists, where all the elements /// in both are present. That is, the element is included if it is in either <c>a</c> or <c>b</c>. /// The return value is a <c>Clone()</c> of one of the SerializableLists (<c>a</c> if it is not <c>null</c>) with elements of the other SerializableList /// added in. Neither of the input SerializableLists is modified by the operation. /// </summary> /// <param name="a">A SerializableList of elements.</param> /// <param name="b">A SerializableList of elements.</param> /// <returns>A SerializableList containing the union of the input SerializableLists. <c>null</c> if both SerializableLists are <c>null</c>.</returns> public static SerializableList <T> Union(SerializableList <T> a, SerializableList <T> b) { if (a == null && b == null) { return(null); } else if (a == null) { return((SerializableList <T>)b.Clone()); } else if (b == null) { return((SerializableList <T>)a.Clone()); } else { return(a.Union(b)); } }