public override bool Equals(object obj) { return this == obj || (obj != null && GetType().Equals(obj.GetType()) && (obj as StringID).Base == Base); // value equals since Base is a string } }