public static MultiSet <T> operator -(MultiSet <T> first, MultiSet <T> second) { first.NotNullReturnsList(first, out List <T> tempList1); second.NotNullReturnsList(second, out List <T> tempList2); var newSet = new MultiSet <T>(tempList1); foreach (var item in tempList2) { newSet.RemoveAll(item); } return(newSet); }
static void Main(string[] args) { char[] znaki = new char[] { 'a', 'a', 'a', 'b', 'c', 'c', 'd', 'e', 'e' }; var mz = new MultiSet <char>(znaki); Console.WriteLine(mz.ToString()); foreach (var x in mz) { Console.WriteLine(x); } //var tempintersect = new char[] { 'a', 'e','x' }; //var tempMS = mz.SymmetricExceptWith(tempintersect); //Console.WriteLine("---"); //foreach (var x in tempMS) // Console.WriteLine(x); //var tempintersect = new char[] { 'a', 'b', 'c', 'd', 'e', 'x' }; //Console.WriteLine(mz.IsProperSubsetOf(tempintersect)); //char[] znaki1 = new char[] { 'a', 'a', 'a', 'b', 'c', 'c', 'd', 'e', 'e', 'x' }; //Console.WriteLine(mz.MultiSetEquals(znaki1)); //Console.WriteLine(mz.ToString()); //char[] znakX = new char[] { 'x', 'X' }; //var mz2 = new MultiSet<char>(znakX); //Console.WriteLine(mz2.ToString()); ////Console.WriteLine(mz.MultiSetEquals(mz2)); //var newMsPlus = mz2 + mz; //Console.WriteLine(newMsPlus.ToString()); //char[] toMinus = new char[] { 'a', 'b','x' }; //var mz3 = new MultiSet<char>(toMinus); //var newMsMinus = mz - mz3; //Console.WriteLine(newMsMinus); //var mz4 = mz * mz3; //Console.WriteLine(mz4); //mz.IntersectWith(mz3); //Console.WriteLine(mz); //char[] chars = new char[] { 'a', 'b', 'c', 'd', 'e' }; //var ms = new MultiSet<char>(chars); //char[] chars2 = new char[] { 'a', 'b', 'x' }; //var ms2 = new MultiSet<char>(chars2); //ms = ms.SymmetricExceptWith(ms2); //Console.WriteLine(ms); }
public static bool IsMultiSetReadonly(MultiSet <T> ms) => ms.IsReadOnly == true ? throw new NotSupportedException() : false;