-
Notifications
You must be signed in to change notification settings - Fork 1
/
EmptySet.cs
25 lines (23 loc) · 936 Bytes
/
EmptySet.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using System;
using System.Collections.Generic;
namespace DotNetTransformer.Math.Set {
public abstract partial class FiniteSet<T>
where T : IEquatable<T>
{
public static readonly IFiniteSet<T> Empty = new EmptySet();
private sealed class EmptySet : FiniteSet<T>
{
public EmptySet() { }
public override long Count { get { return 0L; } }
public override bool Contains(T item) { return false; }
public override IEnumerator<T> GetEnumerator() { yield break; }
public override bool Equals(IFiniteSet<T> other) {
return !ReferenceEquals(other, null) && other.Count == 0L;
}
public override int GetHashCode() { return 0; }
public override bool IsSubsetOf(ISet<T> other) { return !ReferenceEquals(other, null); }
public override bool IsSubsetOf(IFiniteSet<T> other) { return !ReferenceEquals(other, null); }
public override bool IsSupersetOf(IFiniteSet<T> other) { return Equals(other); }
}
}
}