public bool TryGetValue(String Name, out Atom Value) { Value = null; if (Variables.TryGetValue(Name, out Value)) { return(true); } if (Parent != null) { return(Parent.TryGetValue(Name, out Value)); } return(false); }
public bool TryGetValue(String Name, out Atom Value, List <RecordAtom> VisitedRecords = null) { Value = null; if (Variables.TryGetValue(Name, out Value)) { return(true); } if (Parent != null) { if (VisitedRecords == null) { VisitedRecords = new List <RecordAtom>(); } else if (VisitedRecords.Contains(Parent)) { return(false); } VisitedRecords.Add(this); return(Parent.TryGetValue(Name, out Value, VisitedRecords)); } return(false); }