/// <summary> /// Performs an "exclusive-or" of the two sets, keeping only the elements that /// are in one of the sets, but not in both. The original sets are not modified /// during this operation. The result set is a <c>Clone()</c> of one of the sets /// (<c>a</c> if it is not <c>null</c>) containing /// the elements from the exclusive-or operation. /// </summary> /// <param name="a">A set of elements.</param> /// <param name="b">A set of elements.</param> /// <returns>A set containing the result of <c>a ^ b</c>. <c>null</c> if both sets are <c>null</c>.</returns> public static Set ExclusiveOr(Set a, Set b) { if (a == null && b == null) { return(null); } else if (a == null) { return((Set)b.Clone()); } else if (b == null) { return((Set)a.Clone()); } else { return(a.ExclusiveOr(b)); } }
/// <summary> /// Performs an "exclusive-or" of the two sets, keeping only the elements that /// are in one of the sets, but not in both. The original sets are not modified /// during this operation. The result set is a <c>Clone()</c> of one of the sets /// (<c>a</c> if it is not <c>null</c>) containing /// the elements from the exclusive-or operation. /// </summary> /// <param name="a">A set of elements.</param> /// <param name="b">A set of elements.</param> /// <returns>A set containing the result of <c>a ^ b</c>. <c>null</c> if both sets are <c>null</c>.</returns> public static Set ExclusiveOr(Set a, Set b) { if(a == null && b == null) return null; else if(a == null) return (Set)b.Clone(); else if(b == null) return (Set)a.Clone(); else return a.ExclusiveOr(b); }