public R GetOrElse <R>(IPointish p, Func <T, R> extractor, Func <IPointish, R> elze) { if (Dic.TryGetValue(p, out var v)) { return(extractor(v)); } return(elze(p)); }
public T GetNew(IPointish p, Action <T> initNew = null) { if (Dic.TryGetValue(p, out var v)) { return(v); } var foo = new T { Pos = (P)p }; initNew?.Invoke(foo); Add(foo); return(foo); }