예제 #1
0
            public IModels Remove(Model value)
            {
                value.VerifyNotNull(nameof(value));

                if (!Contains(value))
                {
                    return(this);
                }

                if (!IsSealed)
                {
                    _hashSet.Remove(value);
                    return(this);
                }

                if (Count == 1)
                {
                    return(Empty);
                }

                var result = new HashSetModelSet();

                foreach (var element in this)
                {
                    if (element != value)
                    {
                        result.Add(element);
                    }
                }
                return(result);
            }
예제 #2
0
            public IModels Add(Model value)
            {
                value.VerifyNotNull(nameof(value));

                if (Contains(value))
                {
                    return(this);
                }

                if (!IsSealed)
                {
                    _hashSet.Add(value);
                    return(this);
                }

                if (Count == 0)
                {
                    return(value);
                }
                else
                {
                    var result = new HashSetModelSet();
                    foreach (var model in this)
                    {
                        result.Add(model);
                    }
                    result.Add(value);
                    return(result);
                }
            }