Example #1
0
        public override bool Equals(object obj)
        {
            Term_old t = (Term_old)obj;

            //Если указан id, то сравниваем по id (состав может отличаться). Такой способ нужен для поиска с неизвестным составом
            if (this.id == t.id)
            {
                return(true);
            }
            //Если один из термов не имеет дочерних слов (и id не равны), то термы не равны
            if (t.childs == null || this.childs == null || t.Count == 0 || this.Count == 0)
            {
                return(false);
            }
            //Если длины слов не равны то слова не равны
            if (t.Count != this.Count)
            {
                return(false);
            }
            //Если тривиальные случаи не сработали, то сравниваем каждое дочернее слово с соответствующим
            for (int i = 0; i < this.Count; i++)
            {
                if (t.childs[i] != this.childs[i])
                {
                    return(false);
                }
            }
            return(true);
        }
Example #2
0
 /// <summary>
 /// Проверка наличия дочернего Терма t в данном Терме.
 /// </summary>
 /// <param name="t"></param>
 /// <returns></returns>
 public bool Contains(Term_old t)
 {
     //TODO: оптимизировать поиск без существенных потерь памяти
     return(childs.Any(c => c.id == t.id));
 }