public static void ExampleCode() { Func <int, bool> func = IsEven; var funcWithCache = func.A(); bool isEven; isEven = funcWithCache.Invoke(4); // new input value, new result isEven = funcWithCache.Invoke(3); // new input value, new result isEven = funcWithCache.Invoke(4); // previously used value, cached result }